public enum MyEnum1 {
FOO(BAR), BAR(FOO);
private MyEnum1 other;
private MyEnum1(MyEnum1 other) {
this.other = other;
}
public MyEnum1 getOther() {
return other;
}
}
MyEnum1
Cannot reference a field before it is defined
ここでは宣言の順序が重要であるため、これは非常に理解できるエラーを生成します。しかし、なぜ次のコードはコンパイルされるのでしょうか?
public enum MyEnum2 {
FOO { public MyEnum2 getOther() { return BAR; } },
BAR { public MyEnum2 getOther() { return FOO; } };
public abstract MyEnum2 getOther();
}
FOO
BAR
が定義されている前に参照してBAR
いますが、間違っていますか?