反射

文章目录


反射: 当一个字节码文件加载到内存的时候,jvm会对该字节码进行解剖,然后会创建一个对应的Class对象,把字节码文件的信息全部都存储到该Class对象中,我们只要获取到Class对象,我们就可以使用字节码对象设置对象的属性或者调用对象的方法等操作…

注意: 在反射技术中一个类的任何成员都有对应 的类进行描述。 比如: 成员变量(Field) 成员方法----> Method类

获取Class对象的
方式一:通过Class类中的forName方法获取(推荐使用):Class clazz1 = Class.forName(“类型全名”);
方式二:通过类名获取:Class clazz2 = 类型.class;
方式三:通过对象获取:Class clazz3 = new Person().getClass();
通过反射获得的都是同一对象

Class对象中的getConstructors()获取一个类的所有公共的构造方法(返回的是一个Constructor类型的数组),如果是想获取所有权限构造方法的话用getDeclaredConstructors()
获得指定构造方法:clazz.getCoustructor(…),通过传参类来指定

Constructor.newInstance(…)通过获得构造方法创建一个对象

Class.getMethods()获取所有的公共方法,返回一个Method类数组
Class.getMethod(“方法名”,参数类型) 获得指定的方法
Class.getDeclaredMethod(“方法名”,参数类型)获得指定私有方法
Class.getDeclaredMethods()获取所有的方法,但是不包含父类的方法
Invoke(p,3)执行一个方法。第一个参数:方法的调用对象。第二个参数:方法所需要的参数。如果所调用的这个方法是一个静态的方法,那么第一个参数可填null
Constructor.setAccessible(boolean) 设置访问权限允许访问,true为允许,false为不允许

通过反射获取对应的成员变量:
在反射技术中使用了Field类描述了成员变量的。
set(obj,value)第一个参数:设置该数据的成员变量,第二个参数:属性值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值