为什么以下代码不起作用?
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
List<List<URL>> announces;
announces = new ArrayList<ArrayList<URL>>();
Run Code Online (Sandbox Code Playgroud)
错误如下:
Type mismatch: cannot convert from ArrayList<ArrayList<URL>> to <List<List<URL>>
Run Code Online (Sandbox Code Playgroud)
Buh*_*ndi 16
因为Generic 受限于某种类型List<URL>
.即只List
接受(这是一个接口).
您可以使用通配符来允许任何列表.
List<? extends List<URL>> announces;
Run Code Online (Sandbox Code Playgroud)
您也可以考虑子类型.例:
List<List<URL>> announces = new ArrayList<List<URL>>();
announces.add(new ArrayList<URL>());
announces.add(new LinkedList<URL>());
Run Code Online (Sandbox Code Playgroud)
这是有效的泛型类型接受一个List<URL>
和ArrayList
,LinkedList
是-A List
.
尝试这个
List<? extends List<URL>> announces = new ArrayList<ArrayList<URL>>();
Run Code Online (Sandbox Code Playgroud)