validar usar recorrer herencia estados enum con comportamiento como java enums

usar - ¿Es posible asignar un valor numérico a una enumeración en Java?



recorrer enum java (4)

Extendiendo la respuesta de Bhesh Gurung para asignar valores, puede agregar un método explícito para establecer el valor

public ExitCode setValue( int value){ // A(104), B(203); switch(value){ case 104: return ExitCode.A; case 203: return ExitCode.B; default: return ExitCode.Unknown //Keep an default or error enum handy } }

Desde la aplicación de llamada

int i = 104; ExitCode serverExitCode = ExitCode.setValue(i);

// Tiene una enumeración válida a partir de ahora

[No se puede comentar su respuesta, por lo tanto publicarla por separado]

¿Hay algo como esto posible en Java? ¿Se pueden asignar valores numéricos personalizados a los elementos enum en Java?

public enum EXIT_CODE { A=104, B=203; }


Suponiendo que EXIT_CODE se refiere al System . exit System . exit (exit_code) entonces podrías hacer

enum ExitCode { NORMAL_SHUTDOWN ( 0 ) , EMERGENCY_SHUTDOWN ( 10 ) , OUT_OF_MEMORY ( 20 ) , WHATEVER ( 30 ) ; private int value ; ExitCode ( int value ) { this . value = value ; } public void exit ( ) { System . exit ( value ) ; } }

Luego puede poner lo siguiente en los lugares apropiados en su código

ExitCode . NORMAL_SHUTDOWN . exit ( ) ''


Yes , y luego algunos, ejemplo de la documentación:

public enum Planet { 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 kilograms private final double mass; // in meters private final double radius; Planet(double mass, double radius) { this.mass = mass; this.radius = radius; } private double mass() { return mass; } private double radius() { return radius; } // universal gravitational // constant (m3 kg-1 s-2) public static final double G = 6.67300E-11; double surfaceGravity() { return G * mass / (radius * radius); } double surfaceWeight(double otherMass) { return otherMass * surfaceGravity(); } public static void 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)); } }


public enum EXIT_CODE { A(104), B(203); private int numVal; EXIT_CODE(int numVal) { this.numVal = numVal; } public int getNumVal() { return numVal; } }