ENUM - Pegar name a partir do ordinal

4 respostas
D

Boa tarde pessoal!

Preciso pegar o name a partir do ordinal por exemplo;

public enum Numbs {

JANEIRO(1),FEVEREIRO(2),MARCO(3);

}

Quero passar o três por exemplo e ele me retorna o março.

Vlw!

4 Respostas

gomesrod

Tem um pequeno padrão que costumo usar, que é criar um método static no enum.

Mais ou menos assim:

public enum Numbs {
JANEIRO(1),FEVEREIRO(2),MARCO(3);

public static Numbs getByCodigo(int cod) {
     for (Numbs n : values()) {
           if (n.codigo == cod) {
                 return n;
           }
     }
     throw new IllegalArgumentException("Numbs invalido: " + cod);
}
} 
..
...
...
// Chamador:
Numbs numbs = Numbs.getByCodigo(2);
lucasirc

ordinal começa em 0

pode fazer assim também:

enum MES {
        JANEIRO,FEVEREIRO, MARÇO;
        public static MES getMes(int codigo) {
            return MES.values()[codigo -1];
        }
    }

eu nao aconselho utilizar caracter especial em nome de enum( metodo, classe e etc), é melhor criar uma propriedade nome para seu enum

abraço

gomesrod

Eu não sou a favor de confiar no ordinal natural do enum, em nenhum lugar do código.
Mas acho que nesse caso dos meses dá para fazer desse jeito porque é uma coisa altamente improvável de ter mudança.

Aqui você está falando de qual parte do código? Não achei o caractere especial…

lucasirc

utilizei “ç” em Março

é confiável desde que você passe a trabalhar em todo o projeto com enums e nao com o codigo

abraço

Criado 27 de março de 2013
Ultima resposta 28 de mar. de 2013
Respostas 4
Participantes 3