我正在尝试使用 BeanUtils 与类似于以下内容的 Java bean 进行交互:
public class Bean {
private List<Integer> prices = new LinkedList<Integer>();
public List<Integer> getPrices() {
return prices;
}
}
根据BeanUtils 文档,BeanUtils 确实支持以下索引属性List
:
作为对 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内部对象的类型转换吗?