为什么以下代码不起作用?
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)