@ Lyle의 대답은 다소 위험하며 열거 형을 정적 내부 클래스로 만들면 특히 효과적이지 않습니다. 대신 나는 열거 형 전에 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>();
}
이제 열거 형 생성자에로드하십시오.
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);
}
}
내부 열거 형이있는 경우 열거 형 정의 위에 맵을 정의 할 수 있으며 이론상으로로드해야합니다.
stringMap
초기화에 도달하기 전에 구성됨). 일반적인 해결책은 중첩 클래스를 사용하는 것입니다.