给定一个枚举,其中每个实例与一些值相关联:
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抱怨:非法引用来自初始化程序的静态字段.也就是说,静态Map在所有枚举值之后被初始化,所以你不能从构造函数中引用它.有任何想法吗?