Java: Sie Bekommen ein array von ENUM-Elementen
Gibt es einen besseren Weg zum erstellen von arrays von Elementen einer enum:
public static enum LOGICAL {
AND ("&", "AND"),
OR ("||", "OR");
public final String symbol;
public final String label;
LOGICAL(String symbol, String label) {
this.symbol=symbol;
this.label=label;
}
}
public static final String[] LOGICAL_NAMES = new String[LOGICAL.values().length];
static{
for(int i=0; i<LOGICAL.values().length; i++)
LOGICAL_NAMES[i]=LOGICAL.values()[i].symbol;
}
public static final String[] LOGICAL_LABELS = new String[LOGICAL.values().length];
static{
for(int i=0; i<LOGICAL.values().length; i++)
LOGICAL_LABELS[i]=LOGICAL.values()[i].label;
}
InformationsquelleAutor marcolopes | 2011-05-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht. Das scheint der richtige Weg. Auch wenn es einige Dienstprogramm, es würde verlassen sich auf die Reflexion
Wenn Sie es oft cache es in der enum
Speichern Sie es in einem Feld, so dass Sie nicht berechnen, es jedes mal
Ich war davon überzeugt, dass dieser code nur EINMAL ausgeführt (auf dem ersten Zugriff auf die Klasse).
ah, ja - ich vermisste die Konstanten-definition. So sind Sie schon Zwischenspeichern.
InformationsquelleAutor Bozho
Persönlich würde ich nicht setzen Sie Sie als ein array, dessen Inhalt kann von jedem geändert werden. Ich würde wahrscheinlich verwenden eine unveränderliche Liste statt - und wahrscheinlich aussetzen, dass Sie sich über eine Eigenschaft und nicht als ein Feld. Die Initialisierung wäre so etwas wie dieses:
(Wenn Sie bereits mit Guave Sie wollen vielleicht sogar zu verwenden
ImmutableList
statt, und setzen die Kollektionen, die Art und Weise deutlich zu machen, dass Sie sind unveränderlich.)InformationsquelleAutor Jon Skeet
Wenn Sie Ihre Werte sind sehr Häufig, und Ihre Aufzählung wird immer größer, verwenden Karten. Deklarieren Sie die folgenden in Ihrer Klasse.
und dann nur unten:
dann können Sie
symbols.values()
odersymbols.get(LOGICAL.AND)
etc.InformationsquelleAutor AhmetB - Google