Apache公共PredicatedList没有IllegalArgumentException

时间:2009-05-06 12:57:49

标签: java api collections apache-commons

如果你试图添加的东西与谓词不匹配,Apache Commons Collections中是否有一种方法可以使PredicatedList(或类似的)不会抛出IllegalArgumentException?如果它不匹配,它将忽略将项添加到列表的请求。

例如,如果我这样做:

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

我希望能够执行上述操作,但添加null会被忽略而不会抛出任何异常。

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

2 个答案:

答案 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]