参考:https://www.cnblogs.com/ysocean/p/6516248.html
1. 什么是Java的反射机制?
Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。注意:使用反射机制可以打破封装性,导致了java对象的属性不安全。
2. 反射的好处:可以更灵活的编写代码,代码可以在运行时装配,无需在组件之间进行源代码链接,降低代码的耦合度;还有动态代理的实现等等。
3. 有三种得到class 方式:通过 Class 对象的 forName() 静态方法来获取;直接通过 类名.class 的方式得到,该方法最为安全可靠;通过对象调用 getClass() 方法来获取。
注意:一个类在JVM 中只会有一个class 实例,所以三种方法得到的class 的地址到最后都是相等的。
4. 常用的API:
getName():获得类的完整名字;getDeclaredFields():获得类的所有属性。包括private 声明的和继承类;getMethods():获得类的public类型的方法;
//获取父类私有属性值
System.out.println(getFieldValue(c1.newInstance(),"privateField"));