gpt4 book ai didi

java泛型和程序设计,如何正确实现包含父类(super class)子类型的列表?

转载 作者:行者123 更新时间:2023-11-30 10:37:05 25 4
gpt4 key购买 nike

我有一个动物类和一些真实的动物,比如老鼠、马……它们正在消耗动物类。现在我想创建一个类(class)人口。种群有一个只包含一种动物的列表。

我可以运行这种方法,但它相当丑陋。带通配符 <? extends Animal>我不需要任何类型转换,但添加另一种动物是行不通的。当我只使用 <Animal> ,我总是必须进行转换,并且必须为每种动物编写方法,例如 add_mouse() , 尽管所有这些方法的作用几乎相同。

我的第一个想法是为每种动物引入一个种群类别,但这也不是一个好的解决方案。

我恳请你的帮助。有没有合适的方法可以完成,或者你能建议我另一个程序设计吗?非常感谢。

最佳答案

您的 Population 类需要一个上限类型变量,并且该类中的 List 被限制为仅包含该类型变量的实例:

class Population<A extends Animal> {
final List<A> animals = new ArrayList<>();

void add(A animal) {
animals.add(animal);
}
}

然后你可以像这样使用它:

Population<Dog> dogs = new Population<>();
dogs.add(new Dog()); // OK.

Population<Cat> cats = new Population<>();
cats.add(new Cat()); // OK.

dogs.add(new Cat()); // Compiler error.
cats.add(new Dog()); // Compiler error.

关于java泛型和程序设计,如何正确实现包含父类(super class)子类型的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40265138/

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