문자열을 동등한 Enum 값으로 변환


답변:


221

깨닫기를 바라는java.util.Enumeration 것은 Java 1.5 Enum 유형 과 다릅니다 .

단순히 사용 YourEnum.valueOf("String")하여 동등한 열거 형 유형을 얻을 수 있습니다 .

따라서 열거 형이 다음과 같이 정의 된 경우 :

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, 
    THURSDAY, FRIDAY, SATURDAY
}

다음과 같이 할 수 있습니다.

String day = "SUNDAY";

Day dayEnum = Day.valueOf(day);

네 감사
— 합니다이

18

Java 5 열거 형 (이전 Enumeration클래스 를 언급했기 때문에 확실하지 않음)을 사용한다고 가정하면 하위 클래스 의 valueOf메서드를 사용할 수 있습니다 java.lang.Enum.

MyEnum e = MyEnum.valueOf("ONE_OF_CONSTANTS");

8

valueOf(String)각각에 대해 정의 된 정적 메서드를 사용 합니다 enum.

예를 들어 당신이있는 경우에 enum MyEnum당신은 말할 수MyEnum.valueOf("foo")


4

Type.valueOf("enum string")실제로 존재 한다는 사실 을 깨닫지 못한 채 내 솔루션을 과도하게 설계했을 수도 있습니다 .

더 세밀한 제어를 제공한다고 생각하지만 실제로 필요한지 잘 모르겠습니다.

public enum Type {
    DEBIT,
    CREDIT;

    public static Map<String, Type> typeMapping = Maps.newHashMap();
    static {
        typeMapping.put(DEBIT.name(), DEBIT);
        typeMapping.put(CREDIT.name(), CREDIT);
    }

    public static Type getType(String typeName) {
        if (typeMapping.get(typeName) == null) {
            throw new RuntimeException(String.format("There is no Type mapping with name (%s)"));
        }
        return typeMapping.get(typeName);
    }
}

잠재적으로 코드를 정리할 수있는 (또는 던지고 싶은 예외) 교환 IllegalArgumentException하고 있다고 생각합니다 RuntimeException.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.