可以使用Apache BeanUtils从列表中删除项目而不是将它们设置为null吗?

时间:2012-10-05 14:50:20

标签: java apache-commons-beanutils

我正在考虑使用Apache BeanUtils来管理项目中的一些数据结构。该任务适用于仅在运行时知道的任意路径,以从列表中删除项目。

我想我可以使用BeanUtils将项设置为null,并调用如下:

PropertyUtils.setProperty(myObject, "subitem.aList[3]", null);

然而,在我的项目的其他方面,有循环遍历这些列表。目前未处理列表中的空项目。有许多(几十个,可能是几百个)代码期望这些项不为空的地方,因此遗憾的是,对可能遍历这些列表的所有代码添加空检查是不切实际的。

是否可以使用BeanUtils从集合中删除项目而不是将其设置为null?

我想我可以通过解析传递给setProperty的路径并通过查找以List结尾的路径确定它是否为[<number>]然后解析出数字来实现这一点, List包含列表路径并调用remove(number)。我想在推出自己的解决方案之前使用现有的解决方案。

1 个答案:

答案 0 :(得分:0)

我想你可以通过以下两个步骤来实现你的结果:

    List aList = (List)PropertyUtils.getProperty(myObject, "subitem.aList");
    aList.remove(3); // remove the fourth element

    //set the modified list back
    PropertyUtils.setProperty(myObject, "subitem.aList", aList);