You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现更具可读性的三枚举剩余值查找方法?

优化EnumABC获取剩余枚举值的方案

针对你当前用if-elseif-else实现的逻辑,这里提供几个更具可读性和可维护性的优化方案:

方案一:利用集合差集操作

这种方法逻辑直观,通过集合的移除操作直接得到剩余枚举值,无需复杂的条件判断。

public enum EnumABC {
    A, B, C;

    public static EnumABC getRemaining(EnumABC first, EnumABC second) {
        if (first == second) {
            throw new IllegalArgumentException("输入的两个枚举值必须不同");
        }
        Set<EnumABC> allValues = EnumSet.allOf(EnumABC.class);
        allValues.remove(first);
        allValues.remove(second);
        return allValues.iterator().next();
    }
}

优势:代码简洁,逻辑清晰,即使后续枚举值有调整(只要数量还是3个),核心逻辑无需修改。

方案二:基于数值总和的运算

如果给枚举值分配了连续的整数(比如A=1、B=2、C=3),可以利用总和减去两个输入值的方式快速得到结果。

public enum EnumABC {
    A(1), B(2), C(3);

    private static final int TOTAL_SUM = 6; // 1+2+3的总和
    private final int value;

    EnumABC(int value) {
        this.value = value;
    }

    public static EnumABC getRemaining(EnumABC first, EnumABC second) {
        if (first == second) {
            throw new IllegalArgumentException("输入的两个枚举值必须不同");
        }
        int remainingValue = TOTAL_SUM - first.value - second.value;
        // 反向查找对应枚举
        for (EnumABC e : EnumABC.values()) {
            if (e.value == remainingValue) {
                return e;
            }
        }
        throw new IllegalStateException("无法匹配到剩余枚举值");
    }
}

优势:运算效率高,适合对性能有轻微要求的场景,代码同样无需大量条件判断。

方案三:预定义组合映射表

直接把所有合法的输入组合与结果一一映射,逻辑完全透明,可读性拉满,维护时一目了然。

public enum EnumABC {
    A, B, C;

    private static final Map<Set<EnumABC>, EnumABC> PAIR_RESULT_MAP = Map.of(
        Set.of(A, B), C,
        Set.of(A, C), B,
        Set.of(B, C), A
    );

    public static EnumABC getRemaining(EnumABC first, EnumABC second) {
        if (first == second) {
            throw new IllegalArgumentException("输入的两个枚举值必须不同");
        }
        EnumABC result = PAIR_RESULT_MAP.get(Set.of(first, second));
        if (result == null) {
            throw new IllegalStateException("无效的枚举组合");
        }
        return result;
    }
}

优势:每个输入组合对应的结果清晰可见,排查问题或修改逻辑时无需梳理复杂的条件分支,最适合需要高可读性的场景。

内容的提问来源于stack exchange,提问作者ATalkingMonkey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 18:55:02