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

Java中如何遍历自定义枚举类的枚举值

枚举值遍历实现

Java所有枚举类默认内置values()方法,调用该方法会返回按枚举声明顺序排列、包含所有枚举实例的数组,直接遍历该数组即可实现枚举值遍历,无需额外自定义逻辑。

你的枚举类中val属性为私有,需补充对应的getter方法才能在外部访问该属性值,补全后的枚举代码如下:

public enum Colours {
      RED ("RED"),
      BLUE ("BLUE"),
      YELLOW ("YELLOW"),
      GREEN ("GREEN");

    private String val;

    Colours (String val) {
         this.val = val;
    }

    public String getVal() {
        return val;
    }
}

常见遍历写法

  • 通用for-each写法,兼容所有JDK版本:
public class EnumTraverseTest {
    public static void main(String[] args) {
        for (Colours colour : Colours.values()) {
            // 获取枚举常量名
            System.out.println("常量名:" + colour.name());
            // 获取绑定的val属性
            System.out.println("绑定值:" + colour.getVal());
            // 获取枚举声明顺序下标(从0开始计数)
            System.out.println("顺序下标:" + colour.ordinal());
            System.out.println("------");
        }
    }
}

遍历输出的顺序和枚举值在代码中声明的顺序完全一致,依次为RED、BLUE、YELLOW、GREEN。

  • JDK8及以上版本可以用Stream流遍历,方便后续做过滤、映射等操作:
import java.util.Arrays;

public class EnumTraverseTest {
    public static void main(String[] args) {
        Arrays.stream(Colours.values())
                // 示例:过滤掉值为RED的枚举
                .filter(colour -> !"RED".equals(colour.getVal()))
                .forEach(colour -> System.out.println(colour.getVal()));
    }
}

注意:values()返回的数组由枚举类内部维护,不要手动修改数组元素,否则会导致枚举状态异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:48:23