反射机制是一种程序自我分析的能力。用于获取一个类的类变量,构造函数,方法,修饰符。
优点:运行期类型的判断,动态类加载,动态代理使用反射。
缺点:性能是一个问题,反射相当于一系列解释操作,通知jvm要做的事情,性能比直接的java代码要慢很多。
Java访问和修改私有成员变量
public class Student {
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
import java.lang.reflect.Field;
public class FieldTest {
public static void main(String[] args) {
try {
Student student = new Student();
student.setName("小强");
student.setAge("24");
System.out.println("name : " + student.getName());
Class<Student> stuClazz = Student.class;
Field nameFd = stuClazz.getDeclaredField("name");
// Accessible属性设置为true,才能访问和修改类中的成员变量
nameFd.setAccessible(true);
nameFd.set(student, "小明");
System.out.println("我是" + nameFd.get(student) + ",今年"
+ student.getAge() + "岁");
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出结果:
name : 小强
我是小明,今年24岁