我不明白。为什么这不会编译?只需添加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{}