S2BeansUtilsでEnum型のconverterをつくる。
S2BeansUtilsでEnum型のconverterを作ってみたんだけど、どうもしっくりこない。
public class EnumOrdinalConverter implements Converter {
private final Class enumClass;public EnumOrdinalConverter(Class enumClass) {
this.enumClass = enumClass;
}public Object getAsObject(String value) {
if (StringUtil.isEmpty(value)) {
return null;
}
if (!StringUtil.isNumber(value)) {
return null;
}
return enumClass.getEnumConstants()[IntegerConversionUtil.toPrimitiveInt(value)];
}public String getAsString(Object value) {
return StringConversionUtil.toString(( Enum.class.cast(value) ).ordinal() );
}public boolean isTarget(Class clazz) {
return clazz == Enum.class;
}
}
どの辺がしっくりこないかというと、Enum型のクラス毎にconverterを登録しないといけないところ。
Converterのインタフェースがvalueしかないのでそうするしかなかったんだけど相手を参照できれば汎用的にできるんだけどなぁ。