Java enum宣言で静的な最終変数(事実上定数)を定義する方法はありますか?
私が欲しいのは、BAR(1 ... n)値の文字列リテラル値を1か所で定義することです。
@RequiredArgsConstructor
public enum MyEnum {
BAR1(BAR_VALUE),
FOO("Foo"),
BAR2(BAR_VALUE),
...,
BARn(BAR_VALUE);
private static final String BAR_VALUE = "Bar";
@Getter
private final String value;
}
上記のコードについて次のエラーメッセージが表示されました:定義される前にフィールドを参照できません。
IntelliJ IDEAが定数を抽出するときに示唆する-静的内部クラスを作成します。このアプローチは機能します。
@RequiredArgsConstructor
public enum MyEnum {
BAR1(Constants.BAR_VALUE),
FOO("Foo"),
BAR2(Constants.BAR_VALUE),
...,
BARn(Constants.BAR_VALUE);
@Getter
private final String value;
private static class Constants {
public static final String BAR_VALUE = "BAR";
}
}