@ Benoit, eu não acho que é um engano: esse é sobre definir apenas o primeiro valor e incrementar a partir daí, é sobre definir todos os valores. Mas definitivamente relacionado.
isso ainda funcionará com o gson e a conversão do json.
Zapnologica 13/08/2015
4
Você também pode declarar a variável "public final int numVal" e acessá-la diretamente como EXIT_CODE.A.numVal (eu prefiro o nome 'value'), sem a necessidade de um método de acessador. Como é final, ele só pode ser definido no construtor. OMI leva a um código um pouco mais limpo, mas é principalmente uma questão de preferência, suponho. Usar uma variável final economiza uma definição de método.
9788 Steve Jobs #
34
Sim e, em seguida, alguns exemplos da documentação:
publicenumPlanet{
MERCURY (3.303e+23,2.4397e6),
VENUS (4.869e+24,6.0518e6),
EARTH (5.976e+24,6.37814e6),
MARS (6.421e+23,3.3972e6),
JUPITER (1.9e+27,7.1492e7),
SATURN (5.688e+26,6.0268e7),
URANUS (8.686e+25,2.5559e7),
NEPTUNE (1.024e+26,2.4746e7);// in kilogramsprivatefinaldouble mass;// in metersprivatefinaldouble radius;Planet(double mass,double radius){this.mass = mass;this.radius = radius;}privatedouble mass(){return mass;}privatedouble radius(){return radius;}// universal gravitational // constant (m3 kg-1 s-2)publicstaticfinaldouble G =6.67300E-11;double surfaceGravity(){return G * mass /(radius * radius);}double surfaceWeight(double otherMass){return otherMass * surfaceGravity();}publicstaticvoid main(String[] args){if(args.length !=1){System.err.println("Usage: java Planet <earth_weight>");System.exit(-1);}double earthWeight =Double.parseDouble(args[0]);double mass = earthWeight/EARTH.surfaceGravity();for(Planet p :Planet.values())System.out.printf("Your weight on %s is %f%n",
p, p.surfaceWeight(mass));}}
Por que seu main public void estático (String [] args) está dentro da própria enumeração?
IgorGanapolsky
3
@IgorGanapolsky Para tornar o exemplo independente, eu acho!
27614
2
@IgorGanapolsky: porque é assim nos documentos oficiais (siga o link do Yes )
serv-inc
@ user1587329 Interessante, acho que é apenas para fins de teste. Eu não vejo uma maneira de usar isso em código de liberação de produção ...
IgorGanapolsky
12
Supondo que EXIT_CODE está se referindo a System . exit(exit_code), você pode fazer
enumExitCode{
NORMAL_SHUTDOWN (0), EMERGENCY_SHUTDOWN (10), OUT_OF_MEMORY (20), WHATEVER (30);privateint value ;ExitCode(int value ){this. value = value ;}publicvoid exit (){System. exit ( value );}}
Em seguida, você pode colocar o seguinte nos pontos apropriados do seu código
Se você está procurando uma maneira de agrupar constantes em uma classe, pode usar uma classe interna estática:
publicclassOuterClass{publicvoid exit(boolean isTrue){if(isTrue){System.exit(ExitCode.A);}else{System.exit(ExitCode.B);}}publicstaticclassExitCode{publicstaticfinalint A =203;publicstaticfinalint B =204;}}
Respostas:
fonte
EXIT_CODE.A
eEXIT_CODE.B
são as únicas instâncias que jamais existirão.Sim e, em seguida, alguns exemplos da documentação:
fonte
Supondo que EXIT_CODE está se referindo a
System . exit
(exit_code), você pode fazerEm seguida, você pode colocar o seguinte nos pontos apropriados do seu código
ExitCode . NORMAL_SHUTDOWN . exit ( ) '
fonte
Estendendo a resposta de Bhesh Gurung para atribuir valores, você pode adicionar um método explícito para definir o valor
Do aplicativo de chamada
// Você já tem enum válido
[Não é possível comentar sua resposta, publicando-a separadamente]
fonte
Se você está procurando uma maneira de agrupar constantes em uma classe, pode usar uma classe interna estática:
fonte