如何将枚举值转换为int?
我有一个函数返回一个inttypes。 不过,我只有一个TAX枚举值。
我怎样才能将TAX枚举值转换为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; }
你需要使枚举暴露value
,例如
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(); }
(我已经改变了名字是一个更传统和可读性,顺便说一句。)
这假设你想要在构造函数中赋值。 如果这不是你想要的,你需要给我们更多的信息。
我更喜欢这个:
public enum Color { White, Green, Blue, Purple, Orange, Red }
然后:
//cast enum to int int color = Color.Blue.ordinal();
如果您想要在构造函数中分配的值,则需要在枚举定义中添加一个方法来返回该值。
如果你想要一个代表枚举值的唯一编号,你可以使用ordinal()
。
有时候,一些C#方法使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;
也许最好是使用string表示而不是整数,因为如果将值添加到枚举中,则string仍然有效。 您可以使用枚举的name()方法将枚举值转换为String的枚举的valueOf()方法,以再次从String中创build一个枚举表示。 以下示例显示如何将枚举值转换为String并返回(ValueType是枚举):
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");