Я пытаюсь использовать BeanUtils взаимодействовать с бобом Java, подобным следующем:Настройки списка индексируется свойство с BeanUtils
public class Bean {
private List<Integer> prices = new LinkedList<Integer>();
public List<Integer> getPrices() {
return prices;
}
}
Согласно BeanUtils documentation, BeanUtils поддерживает индексированные свойства, List
s:
в качестве расширения спецификации JavaBeans, пакет BeanUtils рассматривает любое свойство, лежащий в основе данных, тип java.util.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()
может ? Does BeanUtils не поддерживает преобразование типов для объектов внутри List
s?
Спасибо, что делает его работу. Однако, перейдя через фактический источник BeanUtils, я заметил, что на самом деле он не использует метод setPrices() для изменения содержимого списка цен - он просто использует метод getPrices() и напрямую изменяет список. –