instanceof() isInstanceof() isAssignableFrom()三者之间的区别。

首先,语法上:

obj.instanceof(class),obj为任意一个类对象,class则是另外一个类的名称。

Class.inInstance(obj),Class为Class对象,obj则为任意一个类对象如

Class.isAssignableFrom(cls),Class为Class对象,cls为Class类对象

具体用法参见下面代码:

class SuperA{}
class  A extends SuperA{}
class Test{
	public static void main(String[] args) {
		A a1 =new A();
		SuperA superA =new SuperA();
		SuperA a2 =new A();
		System.out.println(a1 instanceof A);
		System.out.println(superA instanceof SuperA);
		System.out.println(a2 instanceof SuperA);//这里就体现出来了instancof和isInstance的区别了
		System.out.println(a2 instanceof A);
		System.out.println();
		
		System.out.println(a1.getClass().isInstance(a1));
		System.out.println(superA.getClass().isInstance(superA));
		System.out.println(a2.getClass().isInstance(superA));//false
		System.out.println(a2.getClass().isInstance(a1));
		System.out.println();
		
		System.out.println(a1.getClass().isAssignableFrom(a1.getClass()));
		System.out.println(superA.getClass().isAssignableFrom(SuperA.class));
		System.out.println(a2.getClass().isAssignableFrom(SuperA.class));//false
		System.out.println(a2.getClass().isAssignableFrom(A.class));
	}
}
true
true
true
true


true
true
false
true


true
true
false
true

至于功能,目前个人暂且认为功能相似,仅在语法上对其进行区分。其中,isInstance 在thinking in java中被称为,动态instanceof



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值