Java instanceof 运算符

10 Sept 2024 | 4 分钟阅读

Java 的 'instanceof' 运算符 用于测试一个对象是否是指定类型(类、子类或接口)的实例。

Java 中的 'instanceof' 也被称为类型比较运算符,因为它将实例与类型进行比较。它返回 true 或 false。如果我们将 'instanceof' 运算符应用于一个值为 null 的变量,则返回 false。

Java instanceof 运算符示例

让我们看一个简单的 instanceof 运算符示例,它检查当前类。

student.java

输出

true

子类类型的对象也是父类类型的。例如,如果一个 'student' 类扩展了 'Teacher' 类,那么 student 类的对象可以通过 student 类本身或 Teacher 类来引用。让我们看下面的例子来更清楚地理解这一点。

让我们看另一个例子。

Student.java

输出

true

使用值为 null 的变量的 instanceof 运算符

让我们花点时间思考一下,如果 instanceof 运算符与值为 null 的变量一起使用,会得到什么结果。答案是它返回 false。请看下面的例子,以便更好地理解这一点。

Student.java

输出

false

Java instanceof 运算符的向下转型

在向下转型中,父类的对象被赋给子类。直接执行会产生编译错误。另一方面,如果尝试通过类型转换来执行,则会在运行时抛出 ClassCastException。使用 'instanceof' 运算符可以轻松进行向下转型。

如果通过类型转换执行向下转型,则会在运行时抛出 ClassCastException。

编译成功但运行时抛出 ClassCastException

instanceof 运算符的向下转型可能性

让我们看看可以使用 instanceof 运算符进行向下转型的示例。

Student.java

输出

Cool! Downcasting successfully performed!

不使用 Java instanceof 运算符进行向下转型

让我们看看如何在不使用 instanceof 运算符的情况下执行向下转型,如下例所示。

Student.java

输出

Cool! Downcasting successfully performed!

理解 instanceof 在 Java 中的实际用途

考虑下面的示例,以理解我们到目前为止所涵盖的内容。

Temp1.java

输出

This is the method of Teacher class

下一主题Java 本地化