1.instanceof运算符
当要使用子类特有功能时,就需要使用向下转型。但是面对具体的子类对象,在向下转型时容易发生ClassCastException类型转换异常,在转换之前必须做类型判断。
java中的instanceof运算符,用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
语法格式:boolean result = object instanceof class
注意事项:
-
obj可以是一个对象,也可以为null。
-
class可以是一个类(class),也可以是接口(interface)。
-
instanceof二元运算符返回的结果是boolean类型。
2.instanceof编译时特点
-
当obj为null的时候:
当obj为null的时候,instanceof的右侧可以是任意类或接口。
-
当obj不为null的时候:
当右边类或接口是左边对象的父类、本身类和子类时,编译通过。
本身类:指的就是“编译时类型”。
【示例】instanceof编译时的特点演示
class Animal {
}
class Cat extends Animal {
}
class Dog extends Animal {
}
class SmallDog extends Dog {
}
public class Test01