たとえば、java.util.MapのすべてのインスタンスにConverterを登録したい場合、これを行う方法はありますか?
new BeanUtilsBean().getConvertUtils().register(new MyConverter(), Map.class);
MyConverter#convert()
Mapの任意のインスタンス(HashMapなど)に対してメソッドが呼び出される場所はどこですか?
この背景には、BeanUtilsを使用してデータベースからさまざまな異なるBeanを設定していることがあります。それらのプロパティの一部は特定のインターフェイスを実装する列挙型であり、それらの値を設定するにはカスタムルーチンが必要です。問題のインターフェイスのすべての実装に単一のコンバータークラスを登録したいと思っていましたが、これを行う方法が見つからなかったため、Bean内のすべてのプロパティのクラスを調べて、その場で登録する必要がありました。コンバータークラスがたまたまこのインターフェースのインスタンスである場合は、コンバータークラスを登録します。
BeanUtilsBean b = new BeanUtilsBean();
Class< ? > propertyType = pu.getPropertyType(this, setterName);
if (isImplementationOfMyInterface(propertyType)) {
b.getConvertUtils().register(new MyConverter(), propertyType);
}
b.setProperty(this, setterName, value);
これはかなり厄介なようです、そして私はこれを行うためのより良い方法があるに違いないと確信していますか?