ストリームでのアサーション

iberbeu:

私は私がnullでない要素のみを取得するには、ストリームをフィルタ処理した後、私は必要なものは何でも彼らと行うことができます知っています。このようなもの:

myList.stream().filter(element -> element != null).doOtherThings...

要素は、ストリーム関数のヌルではないことを主張する方法は、それはすべての要素を通過し、それが一つであるヌルを見つけた場合、それは例外をスローしそうという、ありますか?私は、次のようなものを考えてきました。

myList.stream().assert(Objects::nonNull).doOtherThings...
オレVV:

すでにいくつかの非常に良い提案があります。私が補完できるようにします。何を後にしていることのように表明された場合assertの文、私は私の目的について、読者を導くために、コードでこれを明示したいと思います。あなたの元のリストは、任意の含まれていないことを主張するためnull秒:

    assert ! myList.contains(null);

アサーションは、ストリームパイプラインの下のどこかでチェックする場合は、簡単な方法は次のとおりです。

    assert myList.stream().map(this::transform).allMatch(Objects::nonNull);

:あなたは、アサーションのために別のストリームを作成しますが、既存のストリームパイプラインの途中で例えば使用を主張することを好むしたくない場合

        myList.stream()
                .peek(e -> { assert e != null; })
                .toArray();

あなたはの使用はと心配するpeek私が最後にこのオプションを言及する理由でもある、とても素敵ではありません。peekあなたはそれがの目的に関係だと言うかもしれないので、(引用は、そのコンテキストの取り出し)「は、主にデバッグをサポートするために、」存在する文書化されているassertので、この場合は、その使用を守ります。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=196314&siteId=1