java类型信息——instanceof和isInstance

1、instanceof

用法:a instanceof A,左边的a为对象,右边A为接口名或类名。A为类名时,如果a不是A或A的导出类则编译错误

2、isInstance

用法:A.isInstace(b),A为某个Class对象,右边b为某个对象(b可以为一个Class对象,依然表示b这个对象是不是为A类型的对象)

isInstance和instanceof都考虑继承机构,即子类对象时父类的类型。

3、利用euqals()和==比较不考虑继承机构

interface I1{
}
interface I2{
}
Class Base{
}
Class Derived extends Base{
}
public class Test{
    public static void main(String[] args){
        Base b = new Base();
		Derived der = new Derived();
		Class cb = Base.class;
		Class cder = Derived.class;
		I1 i1 = new A();
		A a = new A();
		System.out.println(i1 instanceof I2);//左边为对象,右边为接口,不报编译错误
		System.out.println(b instanceof Base);
//      System.out.println(a instancdof Base);//编译错误,因为a对象与Base没在同一继承结构中
//      System.out.println(b instanceof Base.class);//编译错误,instanceof右边应为类名
		System.out.println(cder.isInstance(b));
		System.out.println(b.getClass() == Derived.class);
		System.out.println(der.getClass().equals(cd));
    }
}
//output:
//false
//true
//false
//false
//true

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值