反射及暴力反射

获取对应的Class对象


1、对象名.getClass():返回的是某个引用指向的具体对象所属的运行是类,的字节码对象。获取到的是那个真正用来创建对象的子类的字节码对象。

2、类名.class:如果已经有了类名,可以通过.class的方式获取这个类的字节码对象。通过

Class.forName(String className):
String className 全限定名: 包名+类名

反射获取构造对象并创建对象

public Constructor<?>[] getConstructors()能获取所有的被 public修饰的
获取所有的构造方法:public Constructor<?>[] getDeclaredConstructors():
只能获取单个被public 修饰的构造:public Constructor<T>getConstructor(Class<?>...parameterTypes)

public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)可以获取所有的构造方法, 但是一般不会获取被public修饰的构造方法

反射获取成员变量

public Field[] getFields() 获取所有public 修饰的变量
public Field[] getDeclaredFields() 获取所有的 变量 (包含private修饰的)
可以单个获取
public Field getField(String name) 获取指定的 public修饰的变量
public Field getDeclaredField(String name) 获取指定的任意变量(包含私有)
给我们的成员变量 name 进行赋值
public void set(Object obj, Object value)
Object obj 是要给哪一个对象进行赋值 , Object value 具体要赋的值
一个类中 有 被public空参构造,我们想要创建对象, 就可以不用通过反射获取构造,创建对象
可以直接通过 Class类中的 newInstance()
public Field getDeclaredField(String name) 获取指定的任意变量(包含私有)

反射获取成员方法

public Method[] getMethods():获取本类和继承过来的所有的public方法
public Method[] getDeclaredMethods():获取本类中所有的方法(包括private,不包括继承的,和访问权限无关)
public Method getMethod(String methodName, Class<?>... parameterTypes):获取指定public的方法(包括继承的)
String methodName 方法的名字
Class<?>... parameterTypes 方法数据类型.class
public Method getDeclaredMethod(String name,Class<?>... parameterTypes):获取指定方法(包括private,不包括继承的)

反射成员方法执行

public Method getMethod(String methodName, Class<?>... parameterTypes):获取指定public的方法(包括继承的)
String methodName 方法的名字
Class<?>... parameterTypes 方法数据类型.class
执行 通过 反射获取到的成员方法
public Object invoke(Object obj,Object... args)
Object obj 要执行哪个对象的成员方法
Object... args, 要执行的方法的要传入的具体值

暴力反射

暴力反射, 通过暴力反射,我们可以执行 类中私有的成员变量,构造方法,成员方法
获取私有的成员变量, 成员方法 构造
setAccessible(boolean boo) 决定 能否执行 私有的构造方法
boolean boo 默认是 false 意味着 执行权限检查
boo 手动改为 true 意味着取消权限检查
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曲靖花式通幽处

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值