我有枚举 A、B、C。 在一个方法中,我得到了两个不同的 Enum,并且必须返回剩余的 Enum。
示例:我收到 A 和 C,我必须退回 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
}
}
我想知道是否有比这个更具可读性的解决方案。
EnumSet.complementOf
您可以创建一个
Set
枚举对象。事实上,你可以做出高性能的EnumSet
。
enum Animal { DOG , CAT , BIRD }
Set<Animal> furry = EnumSet.of( DOG , CAT ) ;
Set<Animal> nonFurry = EnumSet.complementOf ( furry ) ;
提示:您可以在现代 Java 中本地定义
enum
。 interface
和 record
也是如此。