无法添加用super定义的类型和扩展

时间:2017-06-27 18:49:25

标签: java

我不明白。为什么这不会编译?只需添加Beagles就可以了。 c被宣布为超级比格犬,应该包括狗。

public class Hello<T> {

   public static void main(String[] args){

    Dog d = new Dog();

    ArrayList<? super Beagle> c = makeArrayList(d);

    c.add(new Beagle());
    c.add(new Beagle());
    c.add(new Dog());    
  } 

  public static <G extends Animal> ArrayList<G> makeArrayList(G g){
    ArrayList<G> genlist = new ArrayList<>();
    genlist.add(g);
    return genlist;

 }
}


class Animal{public void makeSound(){
        System.out.println("Sound!");
 }
}   
 class Dog extends Animal{}
class Beagle extends Dog{}

0 个答案:

没有答案