反射(Reflection)详解

Reflection

产生原因:运行时获取、修改数据(类信息、成员数据信息)。

反射入口 java.lang.Class

Class对象分为基本类型(8种)、引用类型:(具体内容在文章末尾)

JVM会为每个对象(基础和引用类型)实例化一个java.lang.Class实例。通过这个Class对象,可以在运行时访问对象的属性和类信息、也可以创建新的对象和类。反射的实现,首先要获取Class实例。

获取Class实例的方法:

  • Object.getClass();
  Class class = object.getClass();
  枚举类型的对象获取的是枚举类的Class,数组对象获取的是数组元素的Class
  • .class
  Objcet.class; 

  int.class.newInstance()
  • Class.forName().
  只能用于引用类型,需要类的完整路径:如java.lang.String

  Class<?> class = Class.forName("java.lang.String");
  • static属性TYPE
  Class<String> class = String.TYPE;
  TYPE的定义:public static final Class<String> TYPE = (Class<String>) String[].class.getComponentType();

获取相关类的Class对象:

  • 父类 getSuperclass()
  • 公共类、接口、枚举等 getClasses()
  • 显示申明的所有类、接口、枚举 getDeclaredClasses()
  • 成员声明类 getDeclaringClasses()

Class对象获取类的信息:

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

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值