gpt4 book ai didi

java - Child[] 无法传递给接受 Parent[] 的方法。为什么?

转载 作者:行者123 更新时间:2023-12-02 09:05:41 25 4
gpt4 key购买 nike

为什么在将 Child[] 传递到接受 Parent[] 的方法时会出现编译错误?

但是我可以定义一个 Parent[] 变量并为其分配一个值 Child[]。

Kathy Sierra Book Generics 章节说它应该可以正常工作。

package com.collections;

import java.util.List;
import java.util.ArrayList;

class AnimalDoctor{
public void checkAnimals(Animal[] animals){
for(Animal a: animals){
a.check();
}
}
}
abstract class Animal {
public abstract void check();
}
class Dog {
public void check(){
System.out.println(" Check Dog");
}
}
class Cat {
public void check(){
System.out.println(" Check Cat");
}
}
class Bird {
public void check(){
System.out.println(" Check Bird");
}
}

public class TestGenerics {

public static void main(String[] args){
class Parent{}
class Child extends Parent{}
Parent[] array = new Child[11]; //no error in assigning array of child elements to Parent[]

Dog[] dogs = { new Dog(), new Dog()};
Cat[] cats = { new Cat(), new Cat(), new Cat()};
Bird[] birds = {new Bird()};

AnimalDoctor doctor = new AnimalDoctor();
doctor.checkAnimals(dogs); //compilation error - why?
doctor.checkAnimals(cats); //compilation error - why?
doctor.checkAnimals(birds); //compilation error - why?
}
}

最佳答案

我的 DogCatBird 类缺少 extends Animal

关于java - Child[] 无法传递给接受 Parent[] 的方法。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59833431/

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