几天前我写了一个简单的Java程序,我发现这段代码不起作用(它给出了编译时错误):
ArrayList<Document> docs = new ArrayList<Book>();
Run Code Online (Sandbox Code Playgroud)
其中Document是一个接口,Book实现了Document.
为什么Java中的继承不适用于泛型?如果我希望该代码可以工作,我必须使用通配符,如下所示:
ArrayList<? extends Document> docs = new ArrayList<Book>();
Run Code Online (Sandbox Code Playgroud)
我想知道这是什么原因?如果我需要一个文档的ArrayList,并且我知道Book也是一个Document,为什么我不能使用BooksList of Books作为DocumentList of Documents?
java ×1