2

如果您尝试添加的内容与谓词不匹配, Apache Commons Collections中是否有办法拥有一个PredicatedList(或类似的)不会抛出 IllegalArgumentException ?如果不匹配,它将忽略将项目添加到列表的请求。

例如,如果我这样做:

List predicatedList = ListUtils.predicatedList(new ArrayList(), PredicateUtils.notNullPredicate());
...
predicatedList.add(null); // throws an IllegalArgumentException 

我希望能够执行上述操作,但是添加 null 被忽略而没有抛出异常。

如果 Commons Collections 支持这一点,我无法从 JavaDocs 中弄清楚。如果可能的话,我想在不滚动我自己的代码的情况下这样做。

4

2 回答 2

1

你不能吞下这个例外吗?

try
{
    predicatedList.add(null);
}
catch(IllegalArgumentException e)
{ 
    //ignore the exception
}

您可能需要编写一个包装器来为您执行此操作...

于 2009-05-06T13:08:41.033 回答
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]
于 2009-05-06T14:00:57.757 回答