我有一个返回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(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();
}
(顺便说一下,我已经改变了名称,使其更常规和可读。)
这是假设您希望在构造函数中分配值。如果这不是你想要的,你需要给我们更多的信息。
一个有点不同的方法(至少在Android上)是使用IntDef注释来组合一组int常量
@IntDef({NOTAX, SALESTAX, IMPORTEDTAX})
@interface TAX {}
int NOTAX = 0;
int SALESTAX = 10;
int IMPORTEDTAX = 5;
用作函数参数:
void computeTax(@TAX int taxPercentage){...}
或者在变量声明中:
@TAX int currentTax = IMPORTEDTAX;
您需要以某种方式使枚举暴露值,例如。
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();
}
(顺便说一下,我已经改变了名称,使其更常规和可读。)
这是假设您希望在构造函数中分配值。如果这不是你想要的,你需要给我们更多的信息。