次のコードでは、get()
が呼び出され、その結果が 型の変数に代入されますList<List<?>>
。get()
は a を返し、List<List<T>>
型パラメータT
が に設定されているインスタンスで呼び出される?
ため、適合するはずです。
import java.util.List;
class Test {
void foo(NestedListProducer<?> test) {
List<List<?>> a = test.get();
}
interface NestedListProducer<T> {
List<List<T>> get();
}
}
しかし、IntelliJ IDEA と Oracle のjavac
バージョン 1.7.0_45 の両方が、私のコードを無効として拒否します。これは「javac」のエラー メッセージです。
java: incompatible types
required: java.util.List<java.util.List<?>>
found: java.util.List<java.util.List<capture#1 of ?>>
このコードが無効なのはなぜですか。