Como eu faço para alterar qual das constantes o enum vale?
9 respostasResolvido
java
T
Thallysson
Olá. Eu estou aprendendo sobre enum. É hilário como eu programo em Java há tempo e só agora fui conhece-los por acidente. Mas o que está me intrigando é o seguinte. Eu tenho este enum:
publicstaticfinalStringONCE="Uma vez";publicstaticStringPARTING_ACTION="A partir de uma ordem";publicstaticStringON_MODIFICATION="Quando houver alguma modificação";publicstaticStringDAILY="Diáriamente";publicstaticStringWEEKLY="Semanalmente";publicstaticStringMONTHLY="Mensalmente";publicenumTRANSFER_IN{ONCE,PARTING_ACTION,ON_MODIFICATION,DAILY,WEEKLY,MONTHLY};
Alguém sabe me dizer como eu faço para “dizer” qual das constantes o enum vale? Eu notei que não existe algo como um setValue.
privateintestadotela;estadotela=Rotinas.PADRAO;//Assumiu o valor -1estadotela=Rotinas.ALTERAR;//Assumiu o valor 2estadotela=Rotinas.INCLUIR;//Assumiu o valor 1
T
Thallysson
Obrigado por responder. E aonde que entre o enum?
P
pmlm1 like
Neste enum não existe qualquer relação entre a String ONCE e o valor da enum TRANSFER_IN.ONCE.
O que tu pretendes, deve ser algo assim:
publicenumTRANSFER_IN{ONCE("Uma vez"),PARTING_ACTION("A partir de uma ordem"),ON_MODIFICATION("Quando houver alguma modificação");Stringvalue;privateTRANSFER_IN(Stringvalue){this.value=value);}publicStringgetValue(){returnthis.value;}}
T
Thallysson
Toda vez que eu quiser alterar seu valor vou ter que chamar o construtor? Criar uma nova enum? É sempre necessário fazer essa declaração semelhante a uma classe? Não dá para declarar simplesmente como um array? Algo como isso: enum nome{opcao1,opcao2,opcao3} ?
Usar construtores como o @pmlm mostrou é bem mais elegante.
Mas se a questão é mudar o valor da String durante a execução do seu programa, vc poderia implementar seu próprio setValue();
publicenumTRANSFER_IN{ONCE("Uma vez"),PARTING_ACTION("A partir de uma ordem"),ON_MODIFICATION("Quando houver alguma modificação");Stringvalue;privateTRANSFER_IN(Stringvalue){setValue(value);}publicStringgetValue(){returnthis.value;}publicvoidsetValue(Stringvalue){this.value=value;}}
Ai vc poderia fazer suas modificações do jeito que quiser depois: