gpt4 book ai didi

Java:从父类(super class)列表中获取子类

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:13:51 27 4
gpt4 key购买 nike

我是 java 新手,对以下代码有 2 个问题:

class Animal { }
class Dog extends Animal { }
class Cat extends Animal { }
class Rat extends Animal { }

class Main {
List<Animal> animals = new ArrayList<Animal>();

public void main(String[] args) {
animals.add(new Dog());
animals.add(new Rat());
animals.add(new Dog());
animals.add(new Cat());
animals.add(new Rat());
animals.add(new Cat());

List<Animal> cats = getCertainAnimals( /*some parameter specifying that i want only the cat instances*/ );
}
}

1) 有没有办法从 Aminal 列表中获取 Dog 或 Cat 实例?2) 如果是,我应该如何正确构建 getCertainAnimals 方法?

最佳答案

Animal a = animals.get(i);   

if (a instanceof Cat)
{
Cat c = (Cat) a;
}
else if (a instanceof Dog)
{
Dog d = (Dog) a;
}

注意:如果您不使用 instanceof,它会编译,但它也允许您将 a 转换为 CatDog,即使 aRat。尽管编译,您将在运行时得到一个 ClassCastException。因此,请确保使用 instanceof

关于Java:从父类(super class)列表中获取子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17779704/

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