Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Apache commons PredicatedList不带IllegalArgumentException_Java_Api_Collections_Apache Commons - Fatal编程技术网

Java Apache commons PredicatedList不带IllegalArgumentException

Java Apache commons PredicatedList不带IllegalArgumentException,java,api,collections,apache-commons,Java,Api,Collections,Apache Commons,如果您试图添加的内容与谓词不匹配,是否有一种方法可以使(或类似)不会抛出IllegalArgumentException?如果不匹配,它将忽略将该项添加到列表中的请求 例如,如果我这样做: List predicatedList = ListUtils.predicatedList(new ArrayList(), PredicateUtils.notNullPredicate()); ... predicatedList.add(null); // throws an IllegalArgum

如果您试图添加的内容与谓词不匹配,是否有一种方法可以使(或类似)不会抛出IllegalArgumentException?如果不匹配,它将忽略将该项添加到列表中的请求

例如,如果我这样做:

List predicatedList = ListUtils.predicatedList(new ArrayList(), PredicateUtils.notNullPredicate());
...
predicatedList.add(null); // throws an IllegalArgumentException 
我希望能够做到以上几点,但是添加null会被忽略,不会引发异常


我无法从JavaDocs中判断Commons集合是否支持这一点。如果可能的话,我希望在不滚动我自己的代码的情况下执行此操作。

您不能接受异常吗

try
{
    predicatedList.add(null);
}
catch(IllegalArgumentException e)
{ 
    //ignore the exception
}
您可能需要编写一个包装器来为您完成此操作…

刚刚找到。我可能可以重新编写代码来使用它,尽管首先悄悄地阻止添加到列表中还是很好的

    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]

这难道不是一个谓词列表的要点,即您只希望列表中的内容符合为其定义的条件吗?为什么不使用普通列表呢?是的,这是谓词列表的要点。但我想让它安静地忽略与谓词不匹配的事情,即进行谓词检查,但如果不匹配,则不要抱怨。这在逻辑上与普通列表的行为相同,因为您不关心谓词检查通知您某个元素未通过。不,这是不同的。可以根据需要多次向标准ArrayList添加null。它们作为单独的元素进入。“l.add(null);l.add(null);l.size();”也是如此。l、 size()将返回2。我不想将空值添加到列表中,因此我想使用谓词列表之类的东西。你完全没有理解我想说的要点。我不希望列表中出现空值,因此我查看了PredictedList。我不想在所有使用该列表的地方进行空检查。我想给大家介绍一下可能会添加到列表中的不同内容。如果这些地方尝试添加null,我希望忽略该添加。但是我不想强迫任何地方都去捕捉如果我使用谓词列表会得到的IllegalArgumentException。所以我想要PredicatedList的功能,但是没有异常抛出,也不必自己滚动!谢谢我只想用库代码就可以了。但我得出的结论是,我必须编写自己的包装器才能接受异常。