反射获取全部成员方法和成员属性,反射配置文件
前面学习了获取class类 获取了构造方法 通过构造方法创建了对象,我们也可获取该对象的全部构造方法,我们能否有私有的构造方法创建一个对象呢 我们来尝试一下
我们先获取class 获取指定的构造方法,然后通过构造方法类的Constructor中的方法,创建对象。我们运行会发现报一个错误,私有的方法师不允许访问的,我们强行用私有方法创建一个对象,就违反面向对象的封装思想,这种情况叫做暴力反射。
如果我们要通过暴力反射强行创建一个对象是否可以呢,是可以的。在java中我们把类的成员变量 成员方法 构造方法都封装成了类,他们的父类是AccessibleObject 类,该类提供了一个方法
public void setAccessible(boolean flag) throws SecurityException
参数值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。参数值为 false 则指示反射的对象应该实施 Java 语言访问检查。
我们将传入的参数改为true,就可以创建了

这种方法我们不推荐使用,仅作为了解
创建对象并取值和赋值
我们先获取class 获取指定的构造方法,然后通过构造方法类的Constructor中的方法,创建对象,获取指定的成员变量成员方法getmethod(),通过get() set(),给对象指定的成员变量进行取值和赋值,通过invoke()执行方法


集合对象指定泛型之后只能存固定的值,我们可以用创建集合对象生成的字节码文件对象,跳过泛型(因为泛型和注释是不进class文件的),所以我们可以往集合中存入一个其他值。
反射最实用的用途就是配置文件,我们使用反射配置一个properties文件。步骤如下 1.明确数据源 2.创建集合对象 3.文件中的键值对读到集合中去 4.获取类名5.获取方法名 6.获得字节码文件对象 7.获取成员方法 8创建对象 9执行方法 代码如下


浙公网安备 33010602011771号