ATa*_*key 1 java enums readability
我有枚举 A、B、C。在一个方法中,我得到两个不同的枚举,并且必须返回剩余的枚举。
示例:我收到 A,CI 必须返回 B
我的解决方案是使用 if elseif else:
private EnumABC findRemaining(EnumABC pEnum1, EnumABC pEnum2){
if((pEnum1 == EnumABC.A || pEnum2 == EnumABC.A)
&& (pEnum1 == EnumABC.B || pEnum2 == EnumABC.B)){
return EnumABC.C;
} else
if((pEnum1 == EnumABC.A || pEnum2 == EnumABC.A)
&& (pEnum1 == EnumABC.C || pEnum2 == EnumABC.C)){
return EnumABC.B;
} else{
return EnumABC.A;
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有比这更可读的解决方案。
enum Animal { DOG , CAT , BIRD }
EnumSet<Animal> flyingAnimals = EnumSet.complementOf ( EnumSet.of( DOG , CAT ) )
Run Code Online (Sandbox Code Playgroud)
EnumSet.complementOf您可以创建一个Set枚举对象。事实上,您可以制作高性能的EnumSet.
enum Animal { DOG , CAT , BIRD }
EnumSet<Animal> furry = EnumSet.of( DOG , CAT ) ;
Run Code Online (Sandbox Code Playgroud)
EnumSet通过调用static方法来请求在 an 中找不到的那些枚举对象EnumSet.complementOf。
EnumSet<Animal> nonFurry = EnumSet.complementOf ( furry ) ;
Run Code Online (Sandbox Code Playgroud)
提示:您可以enum在现代 Java 中本地定义一个。对于interface和 也是如此record。