Java list/array of animals 包含各种动物
Java list/array of animals containing a variety of animals
我需要一份所有动物的清单。我有一个基本的 Animal
class 并想将其扩展到狗、猫、鬣蜥等
有没有什么好的方法可以把它们合二为一List
?
我希望能够检查所有动物的完整列表,而不必更改所有以前制作的动物。他们应该知道所有其他 Animal
class 在他们之后制作的作品。
您可以通过扩展 Animal
基础 class 来制作任意数量的 Animal
,如下所示:
public class Dog extends Animal {
}
然后您可以声明一个新的动物列表。
List<Animal> animals = new ArrayList<Animal>();
完成后,您可以添加任意数量的新对象以扩展 Animal
class 到您的列表。
animals.add(new Dog());
animals.add(new Cat());
animals.add(new Iguana());
您可以这样创建 List<Animal>
:
// create empty list
List<Animal> animals = new ArrayList<>();
// add any kind of animal
animals.add(new Kangaroo());
animals.add(new Butterfly());
// use that list later
int numberOfAnimals = animals.size();
for (Animal animal : animals) {
// do something
}
注意事项:
- 当使用动物列表中的项目时,您不再知道它是哪种动物。如果您想访问动物的袋鼠特定详细信息,您应该检查该物品是否 是 袋鼠(使用
instanceof
)
- 您只能将对象添加到动物列表中,其 class
extends Animal
.
- 一般来说,最好让您的代码尽可能通用。如果您需要
ArrayList
的特殊功能,请将您的动物设为 ArrayList
。但在大多数情况下,将变量定义为 List
甚至 Collection
(或 Iterable
)会使您的代码更加灵活。
叫做Polymorphism。所以基本上,你自己回答了你的问题。在 Java 中添加到声明集合类型的子类型的集合对象是完全合法的。
您可以使用 List<? extends Animal> animals = new ArrayList<>();
然后将任何类型的动物添加到列表中。
我需要一份所有动物的清单。我有一个基本的 Animal
class 并想将其扩展到狗、猫、鬣蜥等
有没有什么好的方法可以把它们合二为一List
?
我希望能够检查所有动物的完整列表,而不必更改所有以前制作的动物。他们应该知道所有其他 Animal
class 在他们之后制作的作品。
您可以通过扩展 Animal
基础 class 来制作任意数量的 Animal
,如下所示:
public class Dog extends Animal {
}
然后您可以声明一个新的动物列表。
List<Animal> animals = new ArrayList<Animal>();
完成后,您可以添加任意数量的新对象以扩展 Animal
class 到您的列表。
animals.add(new Dog());
animals.add(new Cat());
animals.add(new Iguana());
您可以这样创建 List<Animal>
:
// create empty list
List<Animal> animals = new ArrayList<>();
// add any kind of animal
animals.add(new Kangaroo());
animals.add(new Butterfly());
// use that list later
int numberOfAnimals = animals.size();
for (Animal animal : animals) {
// do something
}
注意事项:
- 当使用动物列表中的项目时,您不再知道它是哪种动物。如果您想访问动物的袋鼠特定详细信息,您应该检查该物品是否 是 袋鼠(使用
instanceof
) - 您只能将对象添加到动物列表中,其 class
extends Animal
. - 一般来说,最好让您的代码尽可能通用。如果您需要
ArrayList
的特殊功能,请将您的动物设为ArrayList
。但在大多数情况下,将变量定义为List
甚至Collection
(或Iterable
)会使您的代码更加灵活。
叫做Polymorphism。所以基本上,你自己回答了你的问题。在 Java 中添加到声明集合类型的子类型的集合对象是完全合法的。
您可以使用 List<? extends Animal> animals = new ArrayList<>();
然后将任何类型的动物添加到列表中。