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

如何获取Java枚举中所有成员的自定义字段值?

解决方法

方法一:使用Java 8+ Stream API(简洁高效)

通过getEnumConstants()拿到所有枚举实例后,用Stream流提取每个实例的locale字段,最后转成数组:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        Locale[] enums = Locale.class.getEnumConstants();
        String[] localeValues = Arrays.stream(enums)
                                      .map(locale -> locale.locale)
                                      .toArray(String[]::new);
        // 输出结果:[PL-pl, DE-de, EN-en]
        System.out.println(Arrays.toString(localeValues));
    }
}

方法二:传统循环遍历(兼容Java 8以下版本)

如果项目使用Java 8之前的版本,直接循环枚举数组,逐个提取字段值存入新数组:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        Locale[] enums = Locale.class.getEnumConstants();
        String[] localeValues = new String[enums.length];
        for (int i = 0; i < enums.length; i++) {
            localeValues[i] = enums[i].locale;
        }
        // 输出结果:[PL-pl, DE-de, EN-en]
        System.out.println(Arrays.toString(localeValues));
    }
}

补充优化建议

如果后续需要频繁获取该字段数组,可以在枚举类中新增静态方法,简化调用逻辑:

public enum Locale {
    PL("PL-pl"),
    DE("DE-de"),
    EN("EN-en");

    public final String locale;

    private Locale(String locale) {
        this.locale = locale;
    }

    // 直接返回所有locale字段组成的数组
    public static String[] getAllLocaleValues() {
        return Arrays.stream(values())
                     .map(l -> l.locale)
                     .toArray(String[]::new);
    }
}

使用时直接调用Locale.getAllLocaleValues()即可获取目标数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 18:42:07