我有一个准备了 9 种颜色的枚举。但是对于给定的程序运行,我想循环遍历 n 个第一个值。我将如何以最好的方式做到这一点。我遇到的一个问题是我无法将 Color 与 int 进行比较。
public enum Color{WHITE, YELLOW, GREEN, TEAL, BLUE, PURPLE, PINK, ORANGE, BLACK}
private int numberOfColorsToUse = 6;
Run Code Online (Sandbox Code Playgroud)
不起作用的循环:
for(Game.Color color : Game.Color.values())
{
if(!(color < numberOfColorsToUse))
break;
DrawRectangle(color);
}
Run Code Online (Sandbox Code Playgroud)
编辑:我阅读了 ordinal(),但我“不需要”使用它。这是什么意思?
如果它始终是前 6 种颜色,则可以使用枚举的序数。
for(Game.Color color : Game.Color.values())
{
if(!(color.ordinal() < numberOfColorsToUse))
break;
DrawRectangle(color);
}
Run Code Online (Sandbox Code Playgroud)
更好的方法是使用 EnumSet 来准确指定您想要的颜色:
EnumSet.of(WHITE, YELLOW, GREEN, TEAL, BLUE, PURPLE);
Run Code Online (Sandbox Code Playgroud)
避免在更改枚举中的顺序时出现奇怪的行为。
或者,如果您想要一个范围:
EnumSet.range(WHITE,PURPLE) //has all elements from WHITE to PURPLE
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2368 次 |
| 最近记录: |