Для перечисления, где каждый экземпляр связан с некоторым значением:
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 жалуется: Illegal reference to static field from initializer
. То есть статическая карта инициализируется после всех значений перечисления, поэтому вы не можете ссылаться на нее из конструктора. Любые идеи?