Javaエンジニア、React+Firebaseでアプリを作る

趣味で作ったものいろいろ

【Java】ネストした型のワイルドカードでエラーが出る場合の対処法

例えば、ListのListで、中身はなんでもよい、みたいな場合があるとする。コードであらわすとこんな感じ。

List<List<?>> wildcardList;

これに、例えばIntegerのListのListを割り当てようとするとエラーになる。

List<List<?>> wildcardList = new ArrayList<List<Integer>>();  // コンパイルエラー
// 型の不一致: ArrayList<List<Integer>> から List<List<?>> には変換できません

これを解消するには、境界型を使用して、

List<? extends List<?>> wildcardList = new ArrayList<List<Integer>>();

のように書くとよい。

参考: Java generics, nested collection of wildcard - Stack Overflow