给定一个枚举,其中每个实例与一些值相关联:
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 codeToValue = Maps.newHashMap();
SQLState(String code)
{
this.code = code;
codeToValue.put(code, this); // problematic line
}
}
但Java抱怨:非法引用来自初始化程序的静态字段.也就是说,静态Map在所有枚举值之后被初始化,所以你不能从构造函数中引用它.有任何想法吗?