Я пытаюсь использовать BeanUtils для взаимодействия с Java-компонентом, подобным следующему:
public class Bean {
private List<Integer> prices = new LinkedList<Integer>();
public List<Integer> getPrices() {
return prices;
}
}
Согласно документации BeanUtils , BeanUtils поддерживает индексированные свойства, которые List
s:
Как расширение спецификации JavaBeans, пакет BeanUtils рассматривает любое свойство, базовый тип данных которого java.util.List (или реализация List), также проиндексировано.
Однако, допустим, я пытаюсь сделать что-то вроде следующего:
Bean bean = new Bean();
// Add nulls to make the list the correct size
bean.getPrices().add(null);
bean.getPrices().add(null);
BeanUtils.setProperty(bean, "prices[0]", 123);
PropertyUtils.setProperty(bean, "prices[1]", 456);
System.out.println("prices[0] = " + BeanUtils.getProperty(bean, "prices[0]"));
System.out.println("prices[1] = " + BeanUtils.getProperty(bean, "prices[1]"));
Вывод:
prices[0] = null
prices[1] = 456
Почему BeanUtils.setProperty()
не может установить индексированное свойство, а PropertyUtils.setProperty()
может? Разве BeanUtils не поддерживает преобразование типов для объектов внутри List
s?