Uso de Enuns em protocolos de rede

Salve galera,

Estou com um probleminha, quem sabe vcs já não tenham passado pelo mesmo e podem me ajudar!

Preciso usar um protocolo de rede para configurar um dispositivo qualquer! Nesse protocolo foi definido um identificador para cada configuração e para cada valor.

Estava pensando em representar esses identificadores como Enuns!

Representar os identificadores de valores com enum td bem, são cinco valores. Posso criar um enum onde eu possa pegar a representação em hexa desse identificador e posso criar um metodo fabrica onde eu passo uma representação em hexa e ele me retorna um enum, usando aquele case básico.

Agora com os identificadores de configuração a coisa começa a ficar feia, são em torno de 150 identificadores. Imagina fazer um metodo fabrica que recebe um hexa e retorna um enum, tendo um case de 150 linhas! Que feio! Outra solução que pensei foi usar um hash map, mas imagina adicionar 150 enuns nesse map, tão feio quanto fazer um case de 150 linhas!

Minha dúvida é essa como transformar um hexa em um Enum! Sem fazer um case gigante ou ter que adicionar todos os enuns em um hash map?

Se alguem puder me ajudar!!!

[]s

Se seus valores começarem por 0 e não tiverem “buracos”, então você pode usar o array retornado pelo método “values()”, que existe em toda enum.

enum Enum1000 {
    AZUL, AMARELO, VERDE, VERMELHO, PRETO, BRANCO, MARROM, CINZA, ROSA, ROXO;
     
    /**
    */
    static Enum1000 valueOf (int i) {
        // Se passar um valor inválido, vai lançar uma ArrayIndexOutOfBoundsException
        return values()[i];
    }
}

class TesteEnum1000 {
     public static void main(String[] args) {
         System.out.println (Enum1000.VERDE.ordinal());
         System.out.println (Enum1000.valueOf (2)); // primeiro elemento = 0
     }
}

[quote=thingol]Se seus valores começarem por 0 e não tiverem “buracos”, então você pode usar o array retornado pelo método “values()”, que existe em toda enum.

[code]
enum Enum1000 {
AZUL, AMARELO, VERDE, VERMELHO, PRETO, BRANCO, MARROM, CINZA, ROSA, ROXO;

/**
*/
static Enum1000 valueOf (int i) {
    // Se passar um valor inválido, vai lançar uma ArrayIndexOutOfBoundsException
    return values()[i];
}

}

class TesteEnum1000 {
public static void main(String[] args) {
System.out.println (Enum1000.VERDE.ordinal());
System.out.println (Enum1000.valueOf (2)); // primeiro elemento = 0
}
}
[/code][/quote]

Fala thingol!

O que a experiencia não faz! Não conhecia esse values! pq sera que values não esta aqui http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Enum.html ?

Boa dica! em alguns lugares eu posso usar isso! so que no pior lugar para mim eu não posso pois ele tem varios buracos!

Valews pela dica