欢迎光临散文网 会员登陆 & 注册

Java 反射

2023-03-08 17:24 作者:回到唐朝当少爷  | 我要投稿

反射

反射允许对封装类的字段,方法和构造函数的所有信息进行编程访问

获取Class对象

  1. Class.forName("全类名");适用于源代码阶段 全类名:包名+类名 这是最为常用的方式

  2. 类名.class 适用于加载阶段 一般更多的是当作参数进行传递

  3. 对象.getClass(); 适用于运行阶段 当我们已经有了这个类的对象时,才可以使用

获取构造方法

Class类中用于获取构造方法的方法

规则:

  • get表示获取

  • Declared表示私有

  • 最后的s表示所有,复数形式

  • 如果当前获取到的是私有的,必须要临时修改访问权限,否则无法使用

方法名 说明 Constructor<?>[] getConstructors() 返回所有公共构造方法对象的数组 Constructor<?>[] getDeclaredConstructors() 返回所有构造方法对象的数组 Constructor getConstructor(Class<?>… parameterTypes) 返回单个公共构造方法对象 Consturctor getDeclaredConstructor(Class<?>… parameterTypes) 返回单个构造方法对象

Constructor类中用于创建对象的方法

获取成员变量

Class类中获取成员变量的方法

规则:

  • get表示获取

  • Declared表示私有

  • 最后的s表示所有,复数形式

  • 如果当前获取到的是私有的,必须要临时修改访问权限,否则无法使用

可以获取权限修饰符,成员变量名字,成员变量数据类型,成员变量记录的值,修改变量记录的值.代码略

获取成员方法

还可以获取方法的形参,方法抛出的异常,获取方法并运行(invoke方法)

反射的作用

  1. 获取一个类所有的信息,获取到了以后再执行其他的业务逻辑

  2. 结合配置文件,动态地创建对象并掉用方法

例:把对象里面所有的成员变量名和值保存到本地文件中(我们并不需要提前知道对象有什么属性)

例:与配置文件结合

Java 反射的评论 (共 条)

分享到微博请遵守国家法律