Java 8 使用反射获取字段值 - 完整指南
在 Java 中,可以使用 Java 反射机制中的 Field 类来获取某个字段的值。
首先,使用 Class 类的 getField() 方法或 getDeclaredField() 方法获取对应的 Field 对象。getField() 方法只能获取公共字段,而 getDeclaredField() 方法可以获取所有字段,不论其访问修饰符。
然后,使用 Field 类的 get() 方法来获取字段的值。get() 方法接收一个对象作为参数,表示要获取字段值的对象。
以下是一个示例代码:
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
MyClass obj = new MyClass();
// 获取字段的值
Field field = MyClass.class.getField('myField');
Object value = field.get(obj);
System.out.println(value);
}
}
class MyClass {
public String myField = 'Hello, World!';
}
在上面的示例中,我们首先创建了一个 MyClass 对象 obj。然后,使用 getField() 方法获取名为'myField' 的字段的 Field 对象。最后,使用 Field 对象的 get() 方法获取字段的值,并打印输出。
需要注意的是,如果字段是私有的,需要使用 getDeclaredField() 方法来获取 Field 对象,并在调用 get() 方法之前先调用 setAccessible(true) 方法,以允许访问私有字段。示例如下:
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
MyClass obj = new MyClass();
// 获取私有字段的值
Field field = MyClass.class.getDeclaredField('myPrivateField');
field.setAccessible(true);
Object value = field.get(obj);
System.out.println(value);
}
}
class MyClass {
private String myPrivateField = 'Hello, World!';
}
在上面的示例中,我们使用 getDeclaredField() 方法获取名为'myPrivateField' 的私有字段的 Field 对象,并在调用 get() 方法之前调用 setAccessible(true) 方法,以允许访问私有字段。最后,获取私有字段的值,并打印输出。
原文地址: https://www.cveoy.top/t/topic/qnMT 著作权归作者所有。请勿转载和采集!