Wie definiere ich statische Konstanten in einer Java-Enumeration?
Gibt es eine Möglichkeit zu definieren static final-Variablen (eigentlich Konstanten) in einer Java-enum-Deklaration?
Was ich will, ist zu definieren, an einer Stelle die string-literal mit dem Wert für die BAR(1...n) - Werte:
@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;
}
Bekam ich folgende Fehlermeldung für den obigen code: kann Nicht auf ein Feld, bevor es definiert ist.
Kommentar zu dem Problem
warum hätten Sie so viele Enumerationen, die mit dem gleichen Wert? dies scheint sich völlig gegen das idiom des enums!
Fehler text ist auch eine Antwort für dein problem !!
@Juvanis: beachten Sie, dass jede enum-Instanz verfügt über einen eigenen eindeutigen Namen, so dass ich nicht betrachten es als ein Verstoß gegen die Idiome von enums. In meinem Fall, Instanzen von MyEnum fungiert als Schlüssel zu einer Karte, welche Tasten ich will auch Ausgang zu einem externen Ziel. Diese output-Werte werden passiert dasselbe in einigen Fällen entsprechend der Spezifikation.
@KishanSarsechaGajjar: NÖ, die Antwort ist nicht da. Ich versuchte, um die konstant-Deklaration an Erster Stelle, und ich habe einen anderen Kompilierungsfehler.
InformationsquelleAutor der Frage jilt3d | 2014-05-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als IntelliJ IDEA empfehlen bei der Extraktion konstant - stellen statische innere Klasse. Dieser Ansatz funktioniert:
InformationsquelleAutor der Antwort Maciej Dobrowolski
Vielleicht sollte man bedenkt, dass diese enum in zwei Felder: eine enum-und int -:
Und dann verwenden:
(Sie können diese in einer Klasse oder nicht, ob es für Euch Sinn macht)
InformationsquelleAutor der Antwort Luan Nico