JAVA反射 | isAssignableFrom()与instanceof关键字的用法

isAssignableFrom()instanceof 关键字,这两种方式是常用的判断继承关系的方式,它们的区别在于:

  • isAssignableFrom()Class 类中的方法,而 instanceofJAVA 关键字
  • isAssignableFrom() 的使用对象是 Class,而 instanceof 的使用对象是对象实例

两者的用法如下,具体使用哪个方法就得看当前拥有的是对象实例还是只有 Class

// isAssignableFrom() 的使用方法
父类.class.isAssignableFrom(子类.class)

// instanceof 的使用方法
子类实例 instanceof 父类类型

代码验证

创建一个接口

public interface A {}

创建一个实现类

public class B implements A {}

测试

public class Test {

    public static void main(String[] args) {
        System.out.println(B.class.isAssignableFrom(B.class));
        System.out.println(A.class.isAssignableFrom(B.class));

        B b = new B();
        System.out.println(b instanceof A);
        System.out.println(b instanceof B);
        System.out.println(B.class.isAssignableFrom(b.getClass()));
        System.out.println(A.class.isAssignableFrom(b.getClass()));
    }

}

结果为

true
true
true
true
true
true

通过代码可以看出,如果不想用 instanceof,也是可以转换为使用 isAssignableFrom() 方法的,但是反过来就不行了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值