我虽然这是一个普遍的问题,但我找不到任何解决方案。
有一个枚举,像
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);
}
}