概念
instanceof 是 Java 的保留关键字,它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型,需要注意的是,该关键字用的是它左边对象的实际类型去判断的,而不是用的它的引用类型,例如
class A{}
class B extends A{}
A obj = new B();
对象obj的引用类型是A,但它的实际类型是B(A的子类类型)
案例
class A{}
class B extends A{}
class C extends A{}
class D extends B{}
A obj = new D();
System.out.println(obj instanceof B);
System.out.println(obj instanceof C);
System.out.println(obj instanceof D);
System.out.println(obj instanceof A);
结果
true
false
true
true
结果分析
类继承关系如下
对象obj的引用类型是A,但它的实际类型是D,而通过继承关系可以看出来,obj属于D类型(它本身就是D类型)、obj属于B类型、obj属于D类型、obj属于A类型