当我尝试将类型为List<List<Object>>
的对象分配给带有通配符参数化类型List<List<?>>
的变量时,我收到错误“不兼容的类型:List<List<Object>>
无法转换到List<List<?>>
“。
示例:
List<List<Object>> x = new ArrayList<>();
List<List<?>> y = x; // Error
另一方面,将类型List<Object>
的对象分配给类型为List<?>
的变量的工作完全正常。
示例:
List<Object> x = new ArrayList<>();
List<?> y = x; // Works fine
为什么?为什么它适用于List<?>
但不适用于List<List<?>>
?
环境:JDK 7,Netbeans 8