Например, если я хочу зарегистрировать конвертер для всех экземпляров java.util.Map, есть ли способ сделать это:
new BeanUtilsBean().getConvertUtils().register(new MyConverter(), Map.class);
, где будет вызван метод MyConverter#convert()
любой экземпляр карты (например, 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);
Это кажется довольно неприятным, и я уверен, что должен быть лучший способ сделать это?