【发布时间】:2012-06-22 14:30:08
【问题描述】:
public void addAllAnimals(ArrayList<? extends Animal> animalLikeList){
// I need to add animal objects (eg Dog, Cat that extends Animal) to animalLikeList.
}
我知道它不允许直接添加,因为? extends Animal 代表Animal 的未知子类型。
我的问题是:对于add 或addAll 或Animal 或Animal 对象的子类型是否有任何方法(间接方式)animalLikeList?
【问题讨论】:
-
我编辑了它 Akhil。我想知道有没有办法(任何顽皮的方式)来添加元素。或者这真的是不可能的!
-
如果你打算违反它的限制,你为什么要使用通配符,它没有意义?
-
我将不同的动物列表(ArrayList
, ArrayList 的原因) 传递给 addAllAnimals 方法。这就是我使用 addAllAnimals(ArrayList extends Animal> -
那么,如果将 Cat 添加到 Dogs List 中,如何确保不会造成堆污染?在这种情况下,这就是通配符限制的全部目的。它的存在是为了保护您的数据,而您想要违反它表明某些事情是不对的,恕我直言
-
现在明白了 Edwin。+1 并同意!
标签: java generics collections