我虽然这是一个普遍的问题,但我找不到任何解决方案。

有一个枚举,像

public enum MyEnum { C, G, A, T, U }

我需要将一个枚举实例与另一个枚举实例进行比较,如下所示:

C补充G
G补充C
A补码T
T补A
U补充T
T补U

我如何在不编写如下代码的情况下做到这一点:
public boolean complements(MyEnum other) {
    if(this.compareTo(C) == 0) {
        if(other.compareTo(G) {
            return true;
        } else return false;
    }
    ...
}

提前致谢。

最佳答案

为什么没有complements字段?您可以将其设为 EnumSet

enum MyEnum {
    G, C, A, T, U;

    static {
        C.complements = EnumSet.of(G);
        G.complements = EnumSet.of(C);
        A.complements = EnumSet.of(T);
        T.complements = EnumSet.of(A, U);
        U.complements = EnumSet.of(T);
    }

    private EnumSet<MyEnum> complements;

    public boolean complements(MyEnum other) {
        return complements.contains(other);
    }
}

10-08 01:31