java - 遍历 java 中枚举的子集

标签 java enums

我准备了一个包含 9 种颜色的枚举。但是对于给定的程序运行,我想遍历 n 个第一个值。我将如何以最好的方式做到这一点。我遇到的一个问题是我无法将 Color 与 int 进行比较。

public enum Color{WHITE, YELLOW, GREEN, TEAL, BLUE, PURPLE, PINK, ORANGE, BLACK}
private int numberOfColorsToUse = 6;

无效的循环:

for(Game.Color color : Game.Color.values())
{
    if(!(color < numberOfColorsToUse))
        break;
    DrawRectangle(color);
}

编辑:我读到了 ordinal(),但我“不需要”使用它。这是什么意思?

最佳答案

如果它总是前 6 种颜色,您可以使用枚举的序号。

for(Game.Color color : Game.Color.values())
{
    if(!(color.ordinal() < numberOfColorsToUse))
        break;
    DrawRectangle(color);
}

更好的方法是使用 EnumSet 来准确指定您想要的颜色:

EnumSet.of(WHITE, YELLOW, GREEN, TEAL, BLUE, PURPLE);

为了避免在更改枚举中的顺序时出现奇怪的行为。

或者如果你想要一个范围:

EnumSet.range(WHITE,PURPLE) //has all elements from WHITE to PURPLE

关于java - 遍历 java 中枚举的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16650756/

相关文章:

java - OpenCV Android 上的静态初始化

Java8 : How to Convert Map<X, List<Y>> to Map<Y,X> using Stream?

c++ - 如何在类(class)学生的枚举中添加和删除值

java - 循环遍历 "Color"枚举并打印值。不同的做法

java - 枚举 - 静态和实例 block

java - ArrayList 在从谷歌数据存储区检索时抛出异常(使用 gwt、java)

java - 使用字符串数组中的条目作为创建新数组 Java 的名称

c++ - 如何将枚举模板映射到类型模板?

swift - 创建枚举实例

java - Gradle:由 gradle 任务 bootJar 创建的 jar 不工作