在枚举中 values() 方法如何工作?
values() 方法背后的逻辑是什么?
在我的项目中,我们将所有枚举数据缓存在 Map 中,如下所示:
public enum Actions {
CREATE("create"),
UPDATE("update"),
DELETE("delete"),
ACTIVE("active"),
INACTIVE("inactive"),
MANAGE_ORDER("manage"),
;
private static Map<String, Actions> actionMap;
static {
actionMap = new HashMap<String, Actions>(values().length);
for(Actions action : values()) {
actionMap.put(action.getName(), action);
}
}
public static Actions fromName(String name) {
if(name == null)
throw new IllegalArgumentException();
return actionMap.get(name);
}
private String name;
private Actions(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
这是使用 enum 的最佳做法吗?