You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何从无Getter方法的只读类中提取各字段的对应值

解决方案

你要获取的是static修饰的静态常量,直接调用Field类的get()方法,传入null作为参数即可(静态字段不属于特定实例,不需要传入类实例对象),同时建议增加类型、修饰符判断逻辑避免出现转换错误,处理反射相关的异常即可。

完整可运行代码示例

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

public class ReadColorConstants {
    public static void main(String[] args) {
        Field[] fields = colorConstants.class.getFields();
        for (Field field : fields) {
            // 过滤出public static final String类型的常量,避免误取其他字段
            if (field.getType() == String.class
                && Modifier.isPublic(field.getModifiers())
                && Modifier.isStatic(field.getModifiers())
                && Modifier.isFinal(field.getModifiers())) {
                try {
                    String fieldName = field.getName();
                    // 静态字段get方法传入null即可获取值
                    String value = (String) field.get(null);
                    // 此处可添加你自己的写入文件逻辑
                    System.out.println(fieldName + " = " + value);
                } catch (IllegalAccessException e) {
                    // 字段为public权限,正常场景不会触发该异常,按需处理即可
                    e.printStackTrace();
                }
            }
        }
    }
}

注意事项

  • 如果你确认colorConstants类中所有public字段都是你需要的String类型静态常量,可以省略前面的修饰符、类型判断逻辑,直接取值即可
  • get()方法默认返回Object类型,需要根据实际字段类型强转,这里你的常量都是String类型,所以直接转String即可
  • final修饰符只会限制字段值的修改,不会限制反射读值,public权限的字段不需要额外修改访问权限即可读取

内容的提问来源于stack exchange,提问作者Ron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 19:36:04