Ich habe eine Aufzählung in Java:
public enum Months
{
JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
}
Ich möchte über den Index auf Aufzählungswerte zugreifen, z
Months(1) = JAN;
Months(2) = FEB;
...
Wie soll ich das machen?
Month
Enumeration.Antworten:
Versuche dies
quelle
public static final ArrayList<Months> ALL = new ArrayList<Month>() {{ for (Months m : Months.values()) add(m); }};
Dann können Sie auf die Elemente zugreifen mitMonths i = ALL.get(index)
Hier sind drei Möglichkeiten, dies zu tun.
quelle
public static
veränderlich (sowohl Array als auch Nicht-final
). Euw. Und einIllegalArgumentException
wäre viel sinnvoller als einenull
Bombe zurückzugeben.Ich habe es einfach versucht und mir folgende Lösung ausgedacht:
Die Klasse hat ihre eigenen Werte, die in einem Array gespeichert sind, und ich verwende das Array, um die Aufzählung bei der Indexposition zu erhalten. Wie oben erwähnt, beginnen Arrays ab 0 zu zählen. Wenn Ihr Index bei '1' beginnen soll, ändern Sie einfach diese beiden Methoden in:
In meinem Main bekomme ich das benötigte Länderobjekt mit
Dies setzt currCountry auf das letzte Land, in diesem Fall Countries.KENTUCKY.
Denken Sie daran, dass dieser Code von ArrayOutOfBoundsExceptions stark betroffen ist, wenn Sie fest codierte Angaben verwenden, um Ihre Objekte abzurufen.
quelle
Ich hatte kürzlich das gleiche Problem und verwendete die von Harry Joy bereitgestellte Lösung. Diese Lösung funktioniert jedoch nur mit nullbasierter Aufzählung. Ich würde es auch nicht als sicher betrachten, da es sich nicht um Indizes handelt, die außerhalb des Bereichs liegen.
Die Lösung, die ich letztendlich verwendet habe, ist vielleicht nicht so einfach, aber sie ist vollständig sicher und beeinträchtigt die Leistung Ihres Codes auch bei großen Aufzählungen nicht:
Wenn Sie sicher sind, dass Sie mit Ihrem Index niemals außerhalb des Bereichs liegen und nicht
UNKNOWN
wie oben verwendet werden möchten, können Sie natürlich auch Folgendes tun:quelle