Mam wyliczenie SOME_ENUM
:
public enum SOME_ENUM {
EN_ONE,
EN_TWO,
EN_THREE;
}
Będzie SOME_ENUM.values()
zawsze zwracają stałe teksty w kolejności zgłoszeń ENUM:
EN_ONE, EN_TWO, EN_THREE
? Czy jest to reguła, czy też nie ma gwarancji, że nie zostanie zmieniona w następnych wersjach JDK?
java
enums
specifications
Skarab
źródło
źródło
Odpowiedzi:
Specyfikacja języka Java używa tego jawnego języka:
Więc tak, zostaną zwrócone w kolejności deklaracji. Warto zauważyć, że kolejność może się zmieniać z czasem, jeśli ktoś zmieni klasę, więc uważaj, jak tego używasz.
źródło
Tak, zwrot w takiej kolejności jest gwarantowany.
Należy jednak unikać polegania na tym i na
ordinal()
wartości, ponieważ może się ona zmienić na przykład po wstawieniu nowych elementów.źródło
Jest to określane przez kolejność deklarowania wartości. Jednak nie ma gwarancji, że Ty (lub ktoś inny) nie zmieni kolejności / wstawia / usuwa wartości w przyszłości . Więc nie powinieneś polegać na zamówieniu.
Efektywna Java 2nd. Edycja poświęca swój punkt 31 blisko powiązanemu tematowi: Użyj pól instancji zamiast liczb porządkowych :
źródło
enum
w jakimś celu, do którego nie był przeznaczony.Inne odpowiedzi są dobre, ale nie komentuj tego:
Nie wierzę, że istnieją gwarancje dotyczące przyszłych JDK, więc nie powinieneś się o nie martwić. Nie byłoby sposobu, aby je wyegzekwować, przyszli liderzy JDK mogą po prostu zdecydować się na rezygnację z takich gwarancji. To jak system parlamentu Westminster: „Żaden parlament nie może związać przyszłego parlamentu”.
To powiedziawszy, historia JDK ujawnia doskonałą spójność. Nie wprowadzają wielu istotnych zmian, więc możesz być całkiem pewien, że bieżące określone (a nie tylko obserwowane) zachowanie zostanie zachowane.
źródło