private enum Handlers {
// Handlers
PATTERN_PHRASE( "patternPhrase", patternPhrase ),
PATTERN_SUB_SUP( "patternSubSup", patternSubSup ),
PATTERN_NO_TEXY( "patternNoTexy", patternNoTexy );
// Map names -> handlers.
// Will this throw a NPE?
// http://www.coderanch.com/t/449575/Programmer-Certification-SCJP/certification/enum-initialization-circularity
static class Names {
final static Map<String, PatternHandler> map = new HashMap();
}
// Members
public final String name;
public final PatternHandler handler;
Handlers( String name, PatternHandler handler ) {
this.name = name;
this.handler = handler;
Names.map.put( name, handler );
}
public static PatternHandler forName( String name ) {
return Names.map.get( name );
}
}