这是我使用的模式:
enum X {
A("a"), B("b"), ...;
private final static Map<String,X> MAP = new HashMap<String,X>();
static {
for( X elem: X.values() ) {
if( null != MAP.put( elem.getValue(), elem ) ) {
throw new IllegalArgumentException( "Duplicate value " + elem.getValue() );
}
}
}
private final String value;
private X(String value) { this.value = value; }
public String getValue() { return value; }
// You may want to throw an error here if the map doesn't contain the key
public static X byValue( String value ) { return MAP.get( value ); }
}
在声明内部的块中访问enum
类型的实例看起来有点奇怪,但这段代码有效。static
enum
在您的情况下,可能看起来像这样:
String fieldName = Code.valueOf(Code.class).getValue();