我可以对Java Enums使用按位OR

amc*_*ack 17 java

假设你有一个枚举方向

enum Direction{
    North,South,East West
}
Run Code Online (Sandbox Code Playgroud)

我可以编写一个使用按位或者比较多个枚举的方法

public boolean canGoDirection(Direction dir){
     return dir | Direction.North;
}
Run Code Online (Sandbox Code Playgroud)

我将上述方法称为

this.canGoDirection(Direction.South | Direction.North);
Run Code Online (Sandbox Code Playgroud)

Dav*_* L. 19

你不能使用bitwise或类似的东西.尝试更像这样的东西:

public boolean canGoDirection(Set<Direction> dirs){
     return dirs.contains(Direction.North);
}
Run Code Online (Sandbox Code Playgroud)

像这样叫:

this.canGoDirection(EnumSet.of(Direction.South,Direction.North));
Run Code Online (Sandbox Code Playgroud)


Ale*_*yak 8

您正在寻找的功能由EnumSet实现.

您的示例可以煮沸为:

final static EnumSet<Direction> ALLOWED_DIRECTIONS =
    EnumSet.of( Direction.North, Direction.South );

public boolean canGoDirection(Direction dir){
     return ALLOWED_DIRECTIONS.contains( dir );
}
Run Code Online (Sandbox Code Playgroud)