¿Cómo convertir el valor enum a int?

Tengo una función que devuelve un tipo int. Sin embargo, solo tengo un valor de la enumeración TAX.

¿Cómo puedo convertir el valor de la enumeración TAX en un int?

public enum TAX { NOTAX(0),SALESTAX(10),IMPORTEDTAX(5); private int value; private TAX(int value){ this.value = value; } } TAX var = TAX.NOTAX; // This value will differ public int getTaxValue() { // what do do here? // return (int)var; } 

Tendría que hacer el value exposición enum de alguna manera, por ejemplo

 public enum Tax { NONE(0), SALES(10), IMPORT(5); private final int value; private Tax(int value) { this.value = value; } public int getValue() { return value; } } ... public int getTaxValue() { Tax tax = Tax.NONE; // Or whatever return tax.getValue(); } 

(He cambiado los nombres para que sean un poco más convencionales y legibles, por cierto).

Esto supone que quieres el valor asignado en el constructor. Si eso no es lo que quieres, tendrás que darnos más información.

Prefiero esto:

 public enum Color { White, Green, Blue, Purple, Orange, Red } 

entonces:

 //cast enum to int int color = Color.Blue.ordinal(); 

Si desea el valor que está asignando en el constructor, debe agregar un método en la definición enum para devolver ese valor.

Si desea un número único que represente el valor enum, puede usar ordinal() .

En algún momento, un enfoque de C # hace la vida más fácil en el mundo de Java …

 class XLINK { static final short PAYLOAD = 102, ACK = 103, PAYLOAD_AND_ACK = 104; } //Now is trivial to use it like a C# enum: int rcv = XLINK.ACK; 

Tal vez sea mejor usar una representación de Cadena que un número entero, porque la Cadena sigue siendo válida si los valores se agregan a la enumeración. Puede usar el método de nombre () de enum para convertir el valor enum a un método String an the valueum de (enum) para crear una representación enum de String nuevamente. El siguiente ejemplo muestra cómo convertir el valor enum a String y viceversa (ValueType es una enumeración):

 ValueType expected = ValueType.FLOAT; String value = expected.name(); System.out.println("Name value: " + value); ValueType actual = ValueType.valueOf(value); if(expected.equals(actual)) System.out.println("Values are equal");