如何确定派生类的类型?

San*_*han 1 java oop inheritance

假设我有一个叫做超类animal,和三个子类分别叫DogCat以及Lion扩展了animal类。然后,我为每个子类创建一个对象并将它们添加到ArrayList<animal>.

当我浏览该列表时,如何区分is 中的每个对象都属于类型的对象DogCat对象?ArrayListanimal

voj*_*jta 5

您应该使用instanceof运算符:

if (animal instanceof Dog) {
   //something
} else if (animal instanceof Cat) {
   //something
} else if (animal instanceof Lion) {
   //something
}
Run Code Online (Sandbox Code Playgroud)

但是,如果您真的需要使用它,您应该三思而后行。在大多数情况下,这instanceof是一种糟糕的 OOP 实践。