我正在考虑使用Apache BeanUtils来管理项目中的一些数据结构。该任务适用于仅在运行时知道的任意路径,以从列表中删除项目。
我想我可以使用BeanUtils将项设置为null,并调用如下:
PropertyUtils.setProperty(myObject, "subitem.aList[3]", null);
然而,在我的项目的其他方面,有循环遍历这些列表。目前未处理列表中的空项目。有许多(几十个,可能是几百个)代码期望这些项不为空的地方,因此遗憾的是,对可能遍历这些列表的所有代码添加空检查是不切实际的。
是否可以使用BeanUtils
从集合中删除项目而不是将其设置为null?
我想我可以通过解析传递给setProperty
的路径并通过查找以List
结尾的路径确定它是否为[<number>]
然后解析出数字来实现这一点, List
包含列表路径并调用remove(number)
。我想在推出自己的解决方案之前使用现有的解决方案。
答案 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);