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;
}
답변
열거 형을 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;
답변
열거 형에 값을 추가하면 문자열이 여전히 유효하기 때문에 정수보다 문자열 표현을 사용하는 것이 좋습니다. 열거 형의 name () 메소드를 사용하여 열거 형 값을 문자열로 변환하고 열거 형의 valueOf () 메소드를 사용하여 문자열에서 열거 형 표현을 다시 작성할 수 있습니다. 다음 예제는 열거 형 값을 문자열로 변환하는 방법을 보여줍니다 (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");
답변
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.
}
답변
다소 다른 접근법 (적어도 안드로이드에서는)은 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;