反射----反射机制获得使用类中构造器,方法

Class类的类表示正在运行的Java应用程序中的类和接口。 枚举是一种类,一个注释是一种界面。 每个数组也属于一个反映为类对象的类,该对象由具有相同元素类型和维数的所有数组共享。
先创建一个需要操作的目标类
在这里插入图片描述

首先我们要Class来获取对应类的字节码文件来使用Class clz = User.class;
使用Constructor<?>[] getConstructors() 方法来返回类中所有公有的构造器;
在这里插入图片描述
使用Constructor<?>[] getDeclaredConstructors() 来获取目标类中所有的构造器共有,私有
在这里插入图片描述
获取某一个构造器:Constructor getConstructor(类<?>… parameterTypes)
parameterTypes:参数数组,也就是根据构造器的参数来确定一个构造器
注意:如果构造器的权限是private需要使用Constructor getDeclaredConstructor(类<?>… parameterTypes);
在这里插入图片描述
使用构造器创建对象:T newInstance() 方法类创建对象
因为私有构造器只能在本类中使用,所以要先通过void setAccessible(boolean flag) 私有的构造器原本是flase会强制经行执行java语句检测,所以要先进行改变成true改为在使用时抑制Java语言访问检查;
在这里插入图片描述
获取目标类中的方法
方法 getMethod(String name, 类<?>… parameterTypes)
返回一个 方法对象,它反映此表示的类或接口的指定公共成员方法 类对象。
方法[] getMethods()
返回包含一个数组 方法对象反射由此表示的类或接口的所有公共方法 类对象,包括那些由类或接口和那些从超类和超接口继承的声明。
方法 getDeclaredMethod(String name, 类<?>… parameterTypes)
返回一个 方法对象,它反映此表示的类或接口的指定声明的方法 类对象。
方法[] getDeclaredMethods()
返回包含一个数组 方法对象反射的类或接口的所有声明的方法,通过此表示 类对象,包括公共,保护,默认(包)访问和私有方法,但不包括继承的方法。
在这里插入图片描述
在这里插入图片描述
Object invoke(Object obj, Object… args)
在具有指定参数的 方法对象上调用此 方法对象表示的底层方法。
在这里插入图片描述
参数不定的方法的调用
基本类型可以使用
invoke(obj,new in[]{1,2,3});
像String类型的引用类型必须使用
invoke(obj,new Object[]{new int[]{}});
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值