我有課: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有wildcards:List<? extends Animal> animalList = new ArrayList<Animal>();我知道我無法向animalList. 我在不同的書籍、互聯網上的文章、視頻課程中都讀到過它,但我仍然不明白為什么?如果我們結animalList只包含對象,extends Animal為什么java不能添加任何對象并將其objects extends Animal強制轉換為Animal?animalList.add(new Dog()); //cast dog to AnimalanimalList.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有一種感覺,他們應該是一樣的。但我感覺不到原理上的區別
添加回答
舉報
0/150
提交
取消