には、以下の構成された例を想像してみてください。のJava - - 列挙型の論理循環参照
Javaでこのような前方参照を処理する方法はありますか?
または、このような状況をモデル化すると、いくつかの列挙型の値の間に論理的循環参照がありますか?
には、以下の構成された例を想像してみてください。のJava - - 列挙型の論理循環参照
Javaでこのような前方参照を処理する方法はありますか?
または、このような状況をモデル化すると、いくつかの列挙型の値の間に論理的循環参照がありますか?
SCISSORS
を定義する前にROCK
に割り当てることはできません。代わりに、静的ブロックに値を割り当てることができます。
私は、人々がコンストラクタでString値を使用する例をたくさん見てきましたが、実際の値が宣言された後で実際の値を割り当てるのがより具体的です。これはカプセル化され、beats
インスタンス変数は変更できません(リフレクションを使用しない限り)。
public enum Hand {
ROCK,
PAPER,
SCISSORS;
private Hand beats;
static {
ROCK.beats = SCISSORS;
PAPER.beats = ROCK;
SCISSORS.beats = PAPER;
}
public Hand getBeats() {
return beats;
}
public static void main(String[] args) {
for (Hand hand : Hand.values()) {
System.out.printf("%s beats %s%n", hand, hand.getBeats());
}
}
}
出力
ROCK beats SCISSORS
PAPER beats ROCK
SCISSORS beats PAPER
なぜこれを下落させましたか?それは実際に私によく見える –
'beat'フィールドの' final'修飾子のために、編集前のコードが動作しませんでした。 – JDC
エラー? – ItamarG3
を「不正な転送参照」エラー情報で更新してください。 – JDC
メソッドの中で 'switch'を使うことができます。 –