atraves dos metodos dele, eu consigo saber o Descricao e a ID,porem, como eu faco para obter o valor do atributo?(nao sei se essa é a definicao certa nessa caso)
por exemplo
me passam o valor “M” como eu faco para obter o valor “MASCULINO” e saber o valor do ID?
importjava.util.Map;importjava.util.HashMap;publicenumSexo{INICIO(0,""),MASCULINO(1,"M"),FEMININO(2,"F"),FIM(3,"");privateintid;privateStringdescr;/** * Guarda as relacoes entre a descricao e o valor * de um elemento da enum */privatestaticMap<String,Sexo>relations;privateSexo(){}privateSexo(intid,Stringdescr){this.id=id;this.descr=descr;}publicintgetId(){returnid;}publicStringgetDescr(){returndescr;}publicvoidsetId(intid){this.id=id;}publicvoidsetDescr(Stringdescr){this.descr=descr;}/** * Recupera um elemento da enum a partir de uma string * @param descr A string de descricao do elemento * @return Um elemento da enum ou null caso nenhum elemento * seja encontrado para a descricao pesquisada. */publicstaticSexogetSexoPorDescr(Stringdescr){returnrelations.get(descr);}/** * Bloco estatico que popula o hashmap com as relacoes entre * descricao e elementos da enum */static{relations=newHashMap<String,Sexo>();for(Sexos:values())relations.put(s.getDescr(),s);}}
O problema é que vc definiu uma string vazia para representar tanto o elemento FIM como o elemento INICIO. Assim, somente o último dos dois a ser lido no bloco estático será relacionado na hashmap. Altere a string de descrição de um dos dois para seja possível recuperar qualquer um dos quatro elementos da sua enum.
K
Kardok
Muito boa Cássio funciona perfeitamente
E
entanglement
Você copiou isso literalmente de um programa em C?
Em enums em C normalmente você precisa definir uma constante para fim (para poder dimensionar arrays contendo um caso para cada constante da enum), mas em Java isso é besteira.