私は汎用クラスFoo<T>
とパラメータ化された型Foo<String>
とFoo<Integer>
を持っています。ここでは、異なるパラメータ化された型を単一のArrayList
に入れたいと思います。これを行う正しい方法は何ですか?javaの汎用型のコンテナ
候補1:
public class MMM {
public static void main(String[] args) {
Foo<String> fooString = new Foo<String>();
Foo<Integer> fooInteger = new Foo<Integer>();
ArrayList<Foo<?> > list = new ArrayList<Foo<?> >();
list.add(fooString);
list.add(fooInteger);
for (Foo<?> foo : list) {
// Do something on foo.
}
}
}
class Foo<T> {}
候補2:ワードで
public class MMM {
public static void main(String[] args) {
Foo<String> fooString = new Foo<String>();
Foo<Integer> fooInteger = new Foo<Integer>();
ArrayList<Foo> list = new ArrayList<Foo>();
list.add(fooString);
list.add(fooInteger);
for (Foo foo : list) {
// Do something on foo.
}
}
}
class Foo<T> {}
、それがFoo<?>
と生型Foo
との間の差に関連しています。
更新:
Grepのアンバウンド形式のワイルドカードパラメータ化された型と生タイプの違いは何ですか?をthis linkに送信すると便利です。