Eu tenho um enum SOME_ENUM
:
public enum SOME_ENUM {
EN_ONE,
EN_TWO,
EN_THREE;
}
Vai SOME_ENUM.values()
sempre devolver os enums na ordem das declarações enum:
EN_ONE, EN_TWO, EN_THREE
? É uma regra ou não é garantido que não seja alterado nas próximas versões do JDK?
java
enums
specifications
Skarab
fonte
fonte
Respostas:
A especificação da linguagem Java usa esta linguagem explícita:
Então, sim, eles serão devolvidos na ordem de declaração. É importante notar que a ordem pode mudar com o tempo se alguém mudar a classe, portanto, tenha muito cuidado ao usar isso.
fonte
Sim, é garantido devolvê-los nessa ordem.
No entanto, você deve evitar confiar nisso e no
ordinal()
valor, pois ele pode mudar após a inserção de novos itens, por exemplo.fonte
É determinado pela ordem em que seus valores são declarados. No entanto, não há garantia de que você (ou outra pessoa) não reordene / insira / remova valores no futuro . Portanto, você não deve confiar na ordem.
Java 2 eficaz. Edition dedica seu item 31 a um tópico intimamente relacionado: Use campos de instância em vez de ordinais :
fonte
enum
para algum propósito ao qual não foi planejado.As outras respostas são boas, mas não comente sobre isso:
Não acredito que existam garantias sobre JDKs futuros, então você nem deve se preocupar com elas. Não haveria nenhuma maneira de aplicá-los, futuros leads de JDK podem simplesmente decidir renegar tais garantias. É como o sistema de parlamento de Westminster: "Nenhum parlamento pode vincular um futuro parlamento."
Dito isso, a história do JDK revela excelente consistência. Eles não fazem muitas alterações significativas, portanto, você pode ter certeza de que o comportamento atual especificado (não apenas observado) será preservado.
fonte