@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);
}
}
内部列挙型がある場合は、列挙型定義の上にマップを定義するだけで、(理論的には) 前にロードする必要があります。