如果你试图添加的东西与谓词不匹配,Apache Commons Collections中是否有一种方法可以使PredicatedList(或类似的)不会抛出IllegalArgumentException?如果它不匹配,它将忽略将项添加到列表的请求。
例如,如果我这样做:
List predicatedList = ListUtils.predicatedList(new ArrayList(), PredicateUtils.notNullPredicate());
...
predicatedList.add(null); // throws an IllegalArgumentException
我希望能够执行上述操作,但添加null会被忽略而不会抛出任何异常。
如果Commons Collections支持这一点,我无法从JavaDocs中找到答案。如果可能的话,我想在不滚动我自己的代码的情况下这样做。
答案 0 :(得分:1)
难道你不能吞下这个例外吗?
try
{
predicatedList.add(null);
}
catch(IllegalArgumentException e)
{
//ignore the exception
}
您可能需要编写一个包装器来为您执行此操作...
答案 1 :(得分:0)
刚刚找到CollectionUtils.filter。我可以修改我的代码来使用它,尽管在第一时间静静地阻止添加到列表中仍然会很好。
List l = new ArrayList();
l.add("A");
l.add(null);
l.add("B");
l.add(null);
l.add("C");
System.out.println(l); // Outputs [A, null, B, null, C]
CollectionUtils.filter(l, PredicateUtils.notNullPredicate());
System.out.println(l); // Outputs [A, B, C]