找到剩余的Enum

问题描述 投票:0回答:1

我有枚举 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
    }
}

我想知道是否有比这个更具可读性的解决方案。

java enums readability
1个回答
1
投票

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
也是如此。

© www.soinside.com 2019 - 2024. All rights reserved.