@ Ответ Лайла довольно опасен, и я видел, что он не работает, особенно если сделать enum статическим внутренним классом. Вместо этого я использовал что-то вроде этого, которое будет загружать карты BootstrapSingleton до перечисления.
Редактировать это больше не должно быть проблемой с современными JVM (JVM 1.6 или выше), но я думаю, что с JRebel все еще есть проблемы, но у меня не было возможности повторно протестировать его .
Загрузи меня первым:
public final class BootstrapSingleton {
// Reverse-lookup map for getting a day from an abbreviation
public static final Map<String, Day> lookup = new HashMap<String, Day>();
}
Теперь загрузите его в конструктор enum:
public enum Day {
MONDAY("M"), TUESDAY("T"), WEDNESDAY("W"),
THURSDAY("R"), FRIDAY("F"), SATURDAY("Sa"), SUNDAY("Su"), ;
private final String abbreviation;
private Day(String abbreviation) {
this.abbreviation = abbreviation;
BootstrapSingleton.lookup.put(abbreviation, this);
}
public String getAbbreviation() {
return abbreviation;
}
public static Day get(String abbreviation) {
return lookup.get(abbreviation);
}
}
Если у вас есть внутреннее перечисление, вы можете просто определить Map над определением перечисления, и это (теоретически) должно быть загружено раньше.
stringMap
инициализации). Обычное решение - использовать вложенный класс.