小编use*_*436的帖子

用泛型在Java中继承

几天前我写了一个简单的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
推荐指数
2
解决办法
156
查看次数

标签 统计

java ×1