我有一个返回int类型的函数。但是,我只有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;
}

当前回答

public enum Tax {

NONE(1), SALES(2), IMPORT(3);

private final int value;
    private Tax(int value) {
        this.value = value;
    }

    public String toString() {
        return Integer.toString(value);
    }
}

class Test {
    System.out.println(Tax.NONE);    //Just an example.
}

其他回答

您需要以某种方式使枚举暴露值,例如。

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();
}

(顺便说一下,我已经改变了名称,使其更常规和可读。)

这是假设您希望在构造函数中分配值。如果这不是你想要的,你需要给我们更多的信息。

有时候,一些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;

如果需要在构造函数中分配的值,则需要在枚举定义中添加一个方法来返回该值。

如果你想要一个唯一的数字来表示枚举值,你可以使用ordinal()。

public enum Tax {

NONE(1), SALES(2), IMPORT(3);

private final int value;
    private Tax(int value) {
        this.value = value;
    }

    public String toString() {
        return Integer.toString(value);
    }
}

class Test {
    System.out.println(Tax.NONE);    //Just an example.
}

我更喜欢这个:

public enum Color {

   White,

   Green,

   Blue,

   Purple,

   Orange,

   Red
}

然后:

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