java - 如何判断派生类的类型?

标签 java oop inheritance

假设我有一个名为 animal 的父类(super class),三个子类分别称为 Dog , Cat ,和Lion扩展 animal类(class)。 然后,我为子类分别创建一个对象,并将它们添加到 ArrayList<animal> 中。 .

当我浏览该列表时,如何区分DogCat对象作为 ArrayList 中的每个对象类型为animal

最佳答案

您应该使用instanceof运算符:

if (animal instanceof Dog) {
   //something
} else if (animal instanceof Cat) {
   //something
} else if (animal instanceof Lion) {
   //something
}

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

关于java - 如何判断派生类的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29053298/

相关文章:

Javascript 多个原型(prototype)函数 - 如何从另一个调用一个

oop - 为什么命令模式在面向对象的设计中很方便?

java - 访问子类的属性

采用继承类的 C++ 非类型模板参数

Java Classloader - 如何引用不同版本的 jar

java - 如何找到主要的 Lucene 源代码

java - 如何从 Java 调用 Web 服务? (我有一个 perl 脚本可以做到这一点)

java - log4j2无法删除旧文件

angular - typescript - 什么是更好的 : Get/Set properties

javascript - 为什么 foo.hasOwnProperty ('__proto__' ) 等于 false?