我可以使用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语句就可以做到这一点。
Answers:
希望您意识到,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(或任何异常要抛出),这有可能清理代码。