Ich habe eine Aufzählung SOME_ENUM
:
public enum SOME_ENUM {
EN_ONE,
EN_TWO,
EN_THREE;
}
Wird SOME_ENUM.values()
immer die Aufzählungen in der Größenordnung von Enum Erklärungen zurück:
EN_ONE, EN_TWO, EN_THREE
? Ist dies eine Regel oder wird nicht garantiert, dass sie in den nächsten JDK-Versionen nicht geändert werden?
java
enums
specifications
Skarab
quelle
quelle
Antworten:
Die Java-Sprachspezifikation verwendet diese explizite Sprache:
Ja, sie werden in der Reihenfolge der Erklärung zurückgesandt. Es ist erwähnenswert, dass sich die Reihenfolge im Laufe der Zeit ändern kann, wenn jemand die Klasse ändert. Seien Sie also sehr vorsichtig, wie Sie diese verwenden.
quelle
Ja, es ist garantiert, dass sie in dieser Reihenfolge zurückgegeben werden.
Sie sollten sich jedoch nicht darauf und auf den
ordinal()
Wert verlassen, da er sich beispielsweise nach dem Einfügen neuer Elemente ändern kann.quelle
Dies hängt von der Reihenfolge ab, in der Ihre Werte deklariert sind. Es gibt jedoch keine Garantie dafür, dass Sie (oder eine andere Person) Werte in Zukunft nicht mehr neu anordnen / einfügen / entfernen . Sie sollten sich also nicht auf die Bestellung verlassen.
Effektives Java 2nd. Die Edition widmet ihren Punkt 31 einem eng verwandten Thema: Verwenden Sie Instanzfelder anstelle von Ordnungszahlen :
quelle
enum
für einen Zweck zu verwenden, für den es nicht gedacht war.Die anderen Antworten sind gut, aber kommentieren Sie dies nicht:
Ich glaube nicht, dass es Garantien für zukünftige JDKs gibt, deshalb sollten Sie sich nicht einmal darum kümmern. Es würde keine Möglichkeit geben, sie durchzusetzen. Zukünftige JDK-Leads könnten sich einfach dazu entschließen, auf solche Garantien zu verzichten. Es ist wie im Westminster-System des Parlaments: "Kein Parlament kann ein zukünftiges Parlament binden."
Die Geschichte des JDK zeigt jedoch eine hervorragende Konsistenz. Sie nehmen nicht viele wichtige Änderungen vor, sodass Sie ziemlich sicher sein können, dass das aktuell festgelegte (nicht nur beobachtete) Verhalten erhalten bleibt.
quelle