私はテキストのみのビデオゲームをデザインしています。2 人のキャラクターを一緒に見ることはあまりありませんが、心と気質はよく似ています。
enum
私の問題は、 static final 内部定数を使用してコンストラクターを介して定数を初期化する方法がわからないことです。それ以外の場合、ゲームは問題ありません。;)
ここにジレンマがあります:
- 私が間違っていなければ、列挙型定数は列挙型の最初の行で定義する必要があります
- 最初の行は、その後に続くものを参照できません (つまり、「定義される前にフィールドを参照できません」)。
この catch-22 を解決するにはどうすればよいですか?
以下は、秘密保持契約の下でゲームからリリースされたサンプル コードです。
enum ValiantHeroWithPrincessSavingTendencies {
SUPERMARIO(TYPICAL_QUOTE_FROM_MARIO), ZELDA(TYPICAL_QUOTE_FROM_ZELDA);
private String aPreparedQuotePurportedToBeSpontaneousAlmostImpulsive;
public String getQuoteUnderStressfulCircumstances() {
return aPreparedQuotePurportedToBeSpontaneousAlmostImpulsive;
}
private ValiantHeroWithPrincessSavingTendencies(String quote) {
aPreparedQuotePurportedToBeSpontaneousAlmostImpulsive = quote;
}
private static final String TYPICAL_QUOTE_FROM_ZELDA = "Have at ya!";
private static final String TYPICAL_QUOTE_FROM_MARIO = "We, wagliu'!";
}
TYPICAL_QUOTE_FROM_MARIO を使用して SUPERMARIO を初期化しようとしていますが、まだ TYPICAL_QUOTE_FROM_MARIO を定義していません。SUPERMARIO の前に private static final フィールドを移動するのは違法だと思います。