最後の質問で (答えてくれてありがとう)、 と の違いを学びましList<Object>
たList<?>
。
ただし、ワイルドカードの有用性はまだわかりません。
私は2つArrayList
のsを持っています:
ArrayList<Integer> li = new ArrayList<Integer>(Arrays.asList(1,2,3));
ArrayList<String> ls = new ArrayList<String>(Arrays.asList("one","two","three"));
次に、以下の 2 つのコード ブロックを見てください。
static void printList(ArrayList<?> list)
{
for (Object elem: list)
System.out.print(elem + " ");
System.out.println();
}
と
static <T> void printList(ArrayList<T> list)
{
for (T elem: list)
System.out.print(elem + " ");
System.out.println();
}
私が電話するとき:
printList(li);
printList(ls);
どちらのメソッドも出力を返します。
1 2 3
one two three
ただし、for ループの 2 番目の解決策では、Object
s の代わりにパラメータ化された型を使用します (はるかにエレガントだと思います)。
したがって、主な疑問は残ります:なぜワイルドカードが必要なのですか?