문자열을 동등한 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.