我有一个像下面这样的枚举,但是 eclipse 说每个相对的对的第一个定义中都有错误。
public enum Baz{
yin(yang), //Cannot reference a field before it is defined
yang(yin),
good(evil), //Cannot reference a field before it is defined
evil(good);
public final Baz opposite;
Baz(Baz opposite){
this.opposite = opposite;
}
}
我要完成的工作是能够使用
Baz.something.opposite
获得Baz.something
的相反对象。有没有可能的解决方法?在此示例中,是否在定义yang
和bad
之前,为yin
和good
保留了空的占位符? 最佳答案
您可以尝试类似的方法:
public enum Baz{
yin("yang"),
yang("yin"),
good("evil"),
evil("good");
private String opposite;
Baz(String opposite){
this.opposite = opposite;
}
public Baz getOpposite(){
return Baz.valueOf(opposite);
}
}
然后引用为
Baz.something.getOpposite()
通过以字符串表示形式查找枚举值,应该可以完成您想要的工作。我认为您无法将其与对Baz的递归引用一起使用。