由于每个实例都与某个值相关联的枚举:如何将值映射回枚举?
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