带有通配符的嵌套泛型

5 java generics

为什么这有效:

List<?> list = new LinkedList<Integer>();
Run Code Online (Sandbox Code Playgroud)

虽然这会产生类型不匹配错误:

List<List<?>> list = new LinkedList<List<Integer>>();
Run Code Online (Sandbox Code Playgroud)

为什么是这样?有没有办法解决这个问题,而不使用原始类型?

Zed*_*Zed 4

尝试

List<? extends List<?>> list = new LinkedList<List<Integer>>();
Run Code Online (Sandbox Code Playgroud)

注意:您应该知道,当您使用像 List 这样的集合时,您只能在“只读”模式下使用它(添加空值除外)。