gpt4 book ai didi

java - 我不明白java中的通配符

转载 作者:行者123 更新时间:2023-11-29 04:17:00 26 4
gpt4 key购买 nike

<分区>

我有课:

class Animal{
public void type(){
System.out.println("I am Animal");
}
}
class Dog extends Animal{
public void type(){
System.out.println("I am Dog");
}
}
class Cat extends Animal{
public void type(){
System.out.println("I am Cat");
}
}
class Haski extends Dog{
public void type(){
System.out.println("I am Haski");
}
}

我用通配符创建了List:

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

我知道我不能向 animalList 添加一些对象。我在不同的书籍、互联网文章、视频类(class)中读到过它,但我仍然不明白为什么?如果我们打结 animalList 只包含对象 extends Animal 为什么 java 不能添加任何 objects extends Animal 并将其转换为 Animal?

animalList.add(new Dog()); //cast dog to Animal
animalList.add(new Cat()); //cast cat to Animal

编译器有足够的信息 - objects extends Animal 为什么它不能转换?

编辑:

所以我理解不对。

List<Animal> animalList1 = new ArrayList<Animal>();
animalList.add(new Animal());
animalList.add(new Dog());
animalList.add(new Cat());
animalList.add(new Haski());

List<? extends Animal> animalList

感觉应该是一样的。但是原理上感觉不到区别

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com