在 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) 方法,以允许访问私有字段。最后,获取私有字段的值,并打印输出。

Java 8 使用反射获取字段值 - 完整指南

原文地址: https://www.cveoy.top/t/topic/qnMT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录