Java를 사용하여를 String
에서 동등한 값 으로 변환 할 수 있습니까?Enumeration
물론 큰 if-else
성명으로 이를 수행 할 수 있지만 가능하면이를 피하고 싶습니다.
이 문서가 주어지면 :
http://download.oracle.com/javase/1.4.2/docs/api/java/util/Enumeration.html
나는 이것이 ifs 또는 case 문없이 가능하다고 너무 희망적이지 않습니다.
Java를 사용하여를 String
에서 동등한 값 으로 변환 할 수 있습니까?Enumeration
물론 큰 if-else
성명으로 이를 수행 할 수 있지만 가능하면이를 피하고 싶습니다.
이 문서가 주어지면 :
http://download.oracle.com/javase/1.4.2/docs/api/java/util/Enumeration.html
나는 이것이 ifs 또는 case 문없이 가능하다고 너무 희망적이지 않습니다.
답변:
깨닫기를 바라는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);
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
.