📅  最后修改于: 2023-12-03 14:52:20.422000             🧑  作者: Mango
在 Java 中,私有变量是不能被直接访问的,只能被类中的其他方法使用。但是有时候我们需要在方法中访问私有变量,这时可以使用 Java 反射机制。
Java 反射机制可以让我们在运行时动态地获取类的信息,并且可以调用类中的方法、构造方法和字段。使用反射机制可以绕过访问控制符的限制,访问私有变量。
假设有一个类 Person
,其中有一个私有变量 name
:
public class Person {
private String name;
public Person(String name) {
this.name = name;
}
}
现在想在一个方法中访问 Person
类中的 name
变量,可以使用反射机制:
public class ReflectionTest {
public static void main(String[] args) throws Exception {
Person person = new Person("Tom");
Class clazz = person.getClass();
Field field = clazz.getDeclaredField("name");
field.setAccessible(true);
String name = (String) field.get(person);
System.out.println(name);
}
}
通过 person.getClass()
获取 Person
类的 Class
对象,然后调用 getDeclaredField()
方法获取 name
变量的 Field
对象,通过 setAccessible(true)
方法取消访问控制符的限制,最后使用 get()
方法获取 name
变量的值。