Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带通配符的Java泛型_Java_Generics_Bounded Wildcard - Fatal编程技术网

带通配符的Java泛型

带通配符的Java泛型,java,generics,bounded-wildcard,Java,Generics,Bounded Wildcard,有任何方法可以解决这种情况(我已尽可能简化场景): 公共类测试{ 公共静态void main(字符串[]args){ /* *在这里,我想指出CollectionGeneric可以是 *扩展Animal(但构造函数不允许 *通配符) */ CollectionGeneric这意味着无法证明这两个集合具有相同的类型界限: CollectionGeneric<? extends Animal> animalsCollectionGeneric = ne

有任何方法可以解决这种情况(我已尽可能简化场景):

公共类测试{
公共静态void main(字符串[]args){
/*
*在这里,我想指出CollectionGeneric可以是
*扩展Animal(但构造函数不允许
*通配符)
*/

CollectionGeneric这意味着无法证明这两个集合具有相同的类型界限:

    CollectionGeneric<? extends Animal> animalsCollectionGeneric = 
             new CollectionGeneric<Animal>(); 
    List<? extends Animal> animals = getAnimals()

collectiongenerico出于兴趣,为什么要使用CollectionGeneric而不只是使用列表?@Nick Holt:正如我在开始时所说的,这是我问题的一个非常简单的版本,相信我,我必须使用CollectionGeneric类很好的答案。请注意,如果你想添加addBeans()方法,它可以简单地获取T类型的对象。Josh Bloch在Google I/O上做了一次关于泛型和通配符的演讲。参见
The method setBeans(List<capture#2-of ? extends Animal>) in the type    
CollectionGeneric<capture#2-of ? extends Animal> is not applicable for
the arguments (List<capture#3-of ? extends Animal>)*
    CollectionGeneric<? extends Animal> animalsCollectionGeneric = 
             new CollectionGeneric<Animal>(); 
    List<? extends Animal> animals = getAnimals()
public void setBeans(List<? extends T> beans) {}
public List<T> getBeans();
List<? extends Animal> beans = getBeans();
GenericCollection<Animal> animals = new GenericCollection<Animal>();
animals.add(beans);