Java instanceof 关键字

2025 年 3 月 23 日 | 阅读 3 分钟

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

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

Java instanceof 简单示例

让我们看看 instance 运算符测试当前类的简单示例。

Output:true

子类类型的对象也是父类的类型。例如,如果 Dog 扩展了 Animal,则 Dog 的对象可以通过 Dog 或 Animal 类来引用。

Java instanceof 运算符的另一个示例

Output:true

值为 null 的变量的 java instanceof

如果我们对值为 null 的变量应用 instanceof 运算符,它将返回 false。让我们看下面的示例,其中我们对值为 null 的变量应用 instanceof 运算符。

Output:false

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

当子类类型引用父类对象时,称为向下转型。如果我们直接执行,编译器会给出编译错误。如果通过类型转换执行,则在运行时抛出 ClassCastException。但是,如果我们使用 instanceof 运算符,则可以进行向下转型。

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

使用 instanceof 进行向下转型的可能性

让我们看一个示例,其中 instanceof 运算符可以进行向下转型。

Output:ok downcasting performed

不使用 java instanceof 进行向下转型

如下面的示例所示,也可以在不使用 instanceof 运算符的情况下执行向下转型。

Output:ok downcasting performed

让我们仔细看看,a 引用的实际对象是 Dog 类的对象。所以如果我们向下转型,那是可以的。但是如果我们写,会发生什么?

理解 instanceof 在 Java 中的实际用途

让我们通过下面的示例了解 instanceof 关键字的实际用途。

Output: b method
下一个主题Java 中的抽象类