反射机制

一 什么是反射机制?

访问已经装载到JVM中类或者对象的信息的机制称作反射机制。

二 Class

1.使用反射机制的第一步就是获得类或者对象在JVM中的对象,有三种方式:

⑴利用全限定性类名,调用forName方法创建:

Class c=Class.forName("全限定性类名");

⑵利用该类的对象获取:

Object obj=new Object();
Class c=obj.getClass();

⑶直接使用类名创建:

Class c=Object.class;//任何数据类型包含基本数据类型都有一个class属性

2.相关方法

  • newInstance():调用无参构造方法创建对象,利用类只能通过无参构造方法创建对象,如果希望通过有参构造方法创建对象,必须借助构造方法。
  • Constructor[] getConstructors:获得所有权限为public的构造方法。
  • Constructor[] getConstructor(Class...parameterTypes):获得具有指定类型参数的构造方法。
  • Constructor[] getDeclaredConstructors:获得所有构造方法,包括private方法。
  • Method[] getMethods:获得所有权限为public的方法。
  • Field[] getFields:获得所有权限为public的成员变量。 

三 Constructor

  • Class[] getParameterTypes:按照声明顺序以数组的形式返回构造方法中各参数的类型。
  • int getParameterCount:返回构造方法中参数的数目。
  • newInstance(Object...initargs):向该构造方法传入初始值创建对象。
  • getModifiers:返回代表构造方法修饰符的整数,一个整数包含多种权限修饰符的信息。再次调用静态方法解析,可以查看构造方法的修饰符。
  • setAccessible(true):将private构造方法转化为public类型的,就可以利用该构造方法创建对象了。

通过反射机制访问构造方法的目的是利用有参构造方法创建对象。

四 Method

  • getName:获取方法名.
  • getReturnType:返回值类型。
  • getParameterTypes:获取形参类型。
  • getModifiers:获取可以解析出修饰符的整数。
  • invoke(obj,args...):使用参数args执行obj对象中的该方法,具体方法必须依附于对象。

通过反射机制访问对象中方法的目的是执行方法。

五 Field

  • getName:获取成员变量的名称。
  • getType:获取成员变量的类型。
  • get(obj):获取指定对象obj中该成员变量的值。
  • setObject(obj,args):为指定对象obj中的该变量赋值为args。具体参数必须依附于对象。
  • setAccessible(true):将变量从private类型转化为public类型。

通过反射机制访问成员变量的目的是为获取指定对象中成员变量的值,或者为成员变量赋值,即取值与赋值两个目的。

转载于:https://www.cnblogs.com/tonghun/p/6933224.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值