我准备了一个包含 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/