值包含多个枚举值

Luk*_* Vo 1 java enums

我有这个枚举:

public enum Direction {
    LEFT,
    RIGHT,
    ABOVE,
    BELOW
}
Run Code Online (Sandbox Code Playgroud)

我可以获取并设置Direction包含2个或更多值的变量,例如:

Direction fromDirection = Direction.LEFT + Direction.ABOVE
Run Code Online (Sandbox Code Playgroud)

如果有可能,请告诉我如何实现它.

Pla*_*ure 7

你可以使用java.util.EnumSet:

final Set<Direction> northEast = EnumSet<Direction>.of(Direction.NORTH, Direction.EAST);
Run Code Online (Sandbox Code Playgroud)

当然,您可以使用任何其他集合实现,但EnumSet类型实现为位向量,非常节省空间和时间,并且可能是您的目标的最佳内置工具.

您可能还希望在枚举类型中定义静态方法,以检查有效组合.

  • EnumSet.of()是更好的方法. (2认同)