gpt4 book ai didi

java - 使用 BeanUtils 设置列表索引属性

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:57:12 24 4
gpt4 key购买 nike

我正在尝试使用 BeanUtils 与类似于以下内容的 Java bean 进行交互:

public class Bean {
private List<Integer> prices = new LinkedList<Integer>();

public List<Integer> getPrices() {
return prices;
}
}

根据 BeanUtils documentation ,BeanUtils 确实支持 List 的索引属性:

As an extension to the JavaBeans specification, the BeanUtils package considers any property whose underlying data type is java.util.List (or an implementation of List) to be indexed as well.

但是,假设我尝试执行以下操作:

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 中对象的类型转换吗?

最佳答案

BeanUtils 需要一个 setter 方法才能工作。您的 Bean 类缺少 prices 的 setter 方法,添加它并重新运行您的代码,它应该可以正常工作:-

public void setPrices(List<Integer> prices) {
this.prices = prices;
}

关于java - 使用 BeanUtils 设置列表索引属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4821708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com