由於每個實例都與某個值相關聯的枚舉:如何將值映射回枚舉?
public enum SQLState
{
SUCCESSFUL_COMPLETION("00000"),
WARNING("01000");
private final String code;
SQLState(String code)
{
this.code = code;
}
}
我如何構建高效的反查起坐地圖嗎?我嘗試了以下方法:
public enum SQLState
{
SUCCESSFUL_COMPLETION("00000"),
WARNING("01000");
private final String code;
private static final Map<String, SQLState> codeToValue = Maps.newHashMap();
SQLState(String code)
{
this.code = code;
codeToValue.put(code, this); // problematic line
}
}
但是Java抱怨:。也就是說,靜態地圖正在初始化之後的所有枚舉值,所以你不能從構造函數中引用它。有任何想法嗎?
有關JLS中的規範示例,請參閱http://java.sun.com/docs/books/jls/third_edition/html/classes.html#324268 – 2011-04-01 15:42:34