instanceof 和isinstance的区别

class A {}
class B extends A {}
class C extends A {}

public class Test {

	public static void main(String[] args) {
		A a = new A();
		B b = new B();
		C c = new C();
		
		//静态比较,类型必须在编译的时候知道
		//判断对象是不是类或者其子类的实例
		System.out.println(a instanceof A);//true
		System.out.println(a instanceof B);//false
		System.out.println(c instanceof A);//true
		System.out.println(null instanceof A);//false
		
		//动态比较,类型可以不知道,在运行时传入
		//判断对象是不是类或者其子类的实例
		System.out.println(a.getClass().isInstance(b));//true
		System.out.println(b.getClass().isInstance(a));//false
		System.out.println(a.getClass().isInstance(null));//false
		

	}

}
posted @ 2018-08-20 20:39  姜文文  阅读(327)  评论(0编辑  收藏  举报