在Java中切换枚举值

Tej*_*rma 3 java enums

请原谅我,如果这是一个愚蠢的问题,但我想知道Java中的枚举是否与整数类似.我的意思是,说我有一个enum声明为

public enum Colour {
    BLACK, WHITE
}
Run Code Online (Sandbox Code Playgroud)

我可以按照我可以在int之间切换的方式在它们之间切换吗?喜欢

Colour newColour = !newColour;
Run Code Online (Sandbox Code Playgroud)

据我所知,它们基本上都是C中的内容.它是否相似?

alf*_*sin 9

当然,您可以通过toggle在枚举中定义一个方法来实现相同的行为:

enum Colour {
    BLACK, WHITE;

    Colour toggle() {
        if (this.equals(BLACK))
            return WHITE;
        else
            return BLACK;
    }
}
Run Code Online (Sandbox Code Playgroud)

用法是: Colour newColour = oldColour.toggle();

  • 注意你也可以使用`this == BLACK`,因为它可能更具可读性和更快 (5认同)
  • @CostiCiudatu`values()`每次都会创建一个新数组,因此将值复制到新数组的成本会超过位技巧带来的任何性能提升. (3认同)