一.获取一个字节码文件对象
1.新建一个Person.java文件
2.编写ReflectDemo.java文件
3.执行结果如下
学到这里我们至少学会拿到一个字节码文件对象了。
二.通过反射获取构造方法
运行结果如下:
在这里我们需要注意一个问题,就是getConstructors返回的是一个表示此类公共构造方法的 Constructor 对象数组 ,也就是必须定义时被public修饰的构造方法才能被返回到数组中,这一点在API中也明确给出了。
下面是API对Constructor类的说明:
当我们将Person类中public Person(String name, int age)这个构造方法的public去掉时,运行结果如下,打印出来的只有两个被public修改的公共构造方法,证明了API的正确性。
其实Class类也提供了更加方便的方法getDeclaredConstructors,用来获取所有已声明的构造方法。
打印结果:结果中包括了非public修饰的构造方法。
三. 通过反射获取构造方法并使用
ReflectDemo代码如下
执行结果如下: