【发布时间】:2011-05-15 18:33:31
【问题描述】:
在这段代码中我得到一个编译器错误,请参阅注释:
public enum Type {
CHANGESET("changeset"),
NEW_TICKET("newticket"),
TICKET_CHANGED("editedticket"),
CLOSED_TICKET("closedticket");
private static final Map<String, Type> tracNameMap = new HashMap<String, Type>();
private Type(String name) {
tracNameMap.put(name, this); // cannot refer to static field within an initializer
}
public static Type getByTracName(String tn) {
return tracNameMap.get(tracNameMap);
}
}
有没有办法让这项工作发挥作用,通过其中一个字段从 Map 获取枚举值?
【问题讨论】:
-
可能值得说明地图的“键”是否始终是枚举的“名称”。如果是这样,那么您将如何做到这一点会有很大的不同。
标签: java enums static initializer