2

Apache Commons Collectionsに、追加しようとしているものが述語と一致しない場合にIllegalArgumentExceptionをスローしないPredicatedList (または同様のもの)を含める方法はありますか?一致しない場合は、アイテムをリストに追加する要求を無視します。

たとえば、これを行うと、次のようになります。

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

上記を実行できるようにしたいのですが、nullの追加は無視され、例外はスローされません。

CommonsCollectionsがこれをサポートしているかどうかは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 に答える