java如何遍历枚举
遍历枚举的方法
在Java中,遍历枚举可以通过多种方式实现。枚举类型在Java中是一种特殊的类,继承自java.lang.Enum,因此可以使用values()方法获取所有枚举值。
使用values()方法
values()是枚举类型隐式提供的一个静态方法,返回枚举的所有实例数组。可以通过增强for循环或普通for循环遍历。

public enum Color {
RED, GREEN, BLUE;
}
public class Main {
public static void main(String[] args) {
for (Color color : Color.values()) {
System.out.println(color);
}
}
}
使用EnumSet
EnumSet是专门为枚举设计的高效集合类,可以方便地遍历枚举值。

import java.util.EnumSet;
public class Main {
public static void main(String[] args) {
EnumSet.allOf(Color.class).forEach(System.out::println);
}
}
使用Stream API
Java 8及以上版本可以通过Stream API遍历枚举值。
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Arrays.stream(Color.values()).forEach(System.out::println);
}
}
使用ordinal()和valueOf()
如果需要获取枚举的索引或通过名称获取枚举值,可以使用ordinal()和valueOf()方法。
public class Main {
public static void main(String[] args) {
for (Color color : Color.values()) {
System.out.println(color.ordinal() + ": " + color.name());
}
Color red = Color.valueOf("RED");
System.out.println(red);
}
}
注意事项
values()方法在编译时由编译器自动生成,但不会出现在Enum类的文档中。- 枚举的顺序与定义时的顺序一致,
ordinal()返回的索引从0开始。 - 使用
valueOf()时,如果传入的名称不匹配任何枚举值,会抛出IllegalArgumentException。






