Java反射与泛型5

目录

通过反射获取继承关系


通过反射获取继承关系

当我们得到一个实例的时候可以获取父类的Class

  • Class.getSuperclass()返回父类的对象
  • Object的父类是null,因为Object是所有类的根类
  • interface的父类是null,因为interface没有superclass
Class sup = Integer.class.getSuperclass(); // Number.class(Integer的父类是Number)
Object.class.getSuperclass(); //null
Runnable.class.getSuperclass(); //null (因为Runnable是接口)

获取当前类直接实现的Interface:

  • Class[ ]  getInterfaces() : 返回一个class数组,数组只包含当前类直接实现的Interface,间接实现的Interface不包括
  • 没有Interface的class返回空数组
  • Interface返回继承的Interface
Class [ ]  ifs = Integer.class.getInterfaces();//[Comparable.class]

Class [ ] ifs = java.util.ArrayList.class.getInterfaces();
//[List.class, RandomAccess.class, Cloneable.class, Serializable.class]

Class [ ] ifs = Math.class.getInterfaces(); // [ ]

Class [ ] ifs = java.util.List.class.getInterfaces(); //[Collection.class]

判断一个calss向上转型是否成立: bool isAssignableFrom(Class)

// Integer i = ...
//Number x = i?

Number.class.isAssignableFrom(Integer.class);//true
//上面代码相当于判断一个Integer实例能否赋值给一个Number类型的变量

//下面是跟上面相反的操作,即判断一个Number类型的实例能否赋值给一个Integer类型的变量
//Number n = ...
//Integer i = n?
Integer.class.isAssignableFrom(Number.class);//false

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值