java中instanceof关键字简单理解
在java中 instanceof的用法为 a instanceof A
判断 对象 a 是否为 类 A 实例化的对象
我们知道由于java的多态性,我们可以用父类的引用指向子类的对象
public class instanceofTest {
public static void main(String[] args) {
Person p = new Man();
// System.out.println(p.isSmoking);//运行报错,因为编译器认为这是一个person对象
Man m = (Man)p;
System.out.println(m.isSmoking);//运行成功,而且强转后保留子类独有的属性
//那么 p 是 person对象 还是 man对象呢?
System.out.println(p instanceof Woman);//应该为false
System.out.println(p instanceof Man);//应该为true
System.out.println(p instanceof Person);//应该为true
}
}
class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Man extends Person{
public boolean isSmoking;
}
class Woman extends Person {
public boolean goShopping;
}
运行结果:

小结
a instanceof A 判断 对象a 是不是 类 A的对象,如果 a instanceof B 也为true,则B一定是A的直接或间接父类(a instanceof Object)一定为true