programing

열거값을 int로 변환하는 방법

bestcode 2022. 7. 21. 00:31
반응형

열거값을 int로 변환하는 방법

타입 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();

생성자에서 할당하는 값을 사용하려면 열거형 정의에 메서드를 추가하여 해당 값을 반환해야 합니다.

enum 값을 나타내는 고유 번호를 원하는 경우 다음을 사용할 수 있습니다.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 an the enum's value Of() 메서드로 변환하여 String에서 열거형 표현을 다시 작성할 수 있습니다.다음으로 열거값을 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");
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.
}

(적어도 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 ProfileType {
PRIVATE,
PUBLIC
}

private ProfileType profileType = ProfileType.PRIVATE;

프로파일에서 int를 얻으려면간단히 수행할 수 있는 유형:

int profileTypeInt = profileType.ordinal();

언급URL : https://stackoverflow.com/questions/8157755/how-to-convert-enum-value-to-int

반응형