S2Dxoで列挙さらに続き
id:koichikさんにコメント戴きまして。有難う御座居ます。
教わったとおり、こんな感じで。
public Object convert(Object source, Class destClass, ConversionContext context) { if(source ==null){ return null; } String srcStr = source.toString(); for(Object e: destClass.getEnumConstants()){ if(e.toString().equals(srcStr)){ return e; } } return null; }
わーできました!getEnumConstantsなんてメソッドがあったとは・・・これでEnum側でgetEnumFromなんてクラスメソッドを実装しないでいけますよ。
標準ではEnum#name()とEnum#toString()は戻り値同じだし、比較する文字列を変えたい時はtoString()をオーバーライドすると云う方針ならば、これはかなり汎用的に使えそうですね。
と思ったら、converterのgetDestClassの戻り値をEnum.classにして汎用的にしようと思ったら、ConverterFactoryImplのgetDistanceでBeanConverterよりランクが下になっちゃって、BeanConverterが優先されちゃいました。
getDistanceの中でisEnumとか使ってランキング(ってんですかね)のロジックをいじればよさそうな予感なんですが、うむむむ。