为什么我可以使用<!-解决List <animal> list = new ArrayList <cat>的问题?扩展Animal->?

时间:2019-02-03 09:37:26

标签: java generics

我最初的问题是:
为什么第二次创建失败?
该问题被标记为已回答,并带有更改该问题的提示,因此是新问题。我现在就这样做

List<Animal> list = new ArrayList<Animal>();
List<Animal> list2 = new ArrayList<Cat>();

我现在明白了。这是因为稍后您将使用list2作为动物列表。一旦添加了Dog,我们就会有ClassCastException或类似的东西。这种情况应该通过使用泛型来消除,因此是不可接受的,否则泛型实现将毫无用处。

正如其中一项评论所述,这应该起作用:

List<? extends Animal> list3 = new ArrayList<Cat>();

那为什么上面解释的问题突然消失了?

0 个答案:

没有答案