1.功能:
1)instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。
2)instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例
3)isInstance功能与instanceof等价
2.instanceof用法公式:
if (ins instanceof String) {
//logic
}
3..isInstance是Class类的一个方法:
if (String.class.isInstance(ins)) {
//...
}
4.实例:
class A {
}
class B extends A {
}
public class Test {
public static void main(String[] args) {
B b = new B();
A a = new A();
A ba = new B();
System.out.println("1------------");
System.out.println(b instanceof B);//true
System.out.println(b instanceof A);//true 一个对象是本身类父类(父类的父类)和接口(接口的接口)的一个对象
System.out.println(b instanceof Object);//true 所有对象都是Object
System.out.println(null instanceof Object);//凡是null有关的都是false
System.out.println("2------------");
System.out.println(b.getClass().isInstance(b));//true
System.out.println(b.getClass().isInstance(a));//false
System.out.println("3------------");
System.out.println(a.getClass().isInstance(ba));//true
System.out.println(b.getClass().isInstance(ba));//true
System.out.println(b.getClass().isInstance(null));//false
System.out.println("4------------");
System.out.println(A.class.isInstance(a));//true
System.out.println(A.class.isInstance(b));//true
System.out.println(A.class.isInstance(ba));//true
System.out.println("5------------");
System.out.println(B.class.isInstance(a));//false
System.out.println(B.class.isInstance(b));//true
System.out.println(B.class.isInstance(ba));//true
System.out.println("6------------");
System.out.println(Object.class.isInstance(b));//true
System.out.println(Object.class.isInstance(null));//false
}
}