だから最も簡単な方法は、直接入力述語であり、私はストリーム上でいくつかのランダムなフィルタを使用すると仮定し述語または関数をJavaストリームフィルタとして使用する違いは何ですか?</p> <pre><code>x.stream().filter(e -> e % 2 == 0) </code></pre> <p>だけでなく、私は単純に参照を作成し、事前に述語を定義することができます:
Predicate<Integer> isEven = e -> e % 2 == 0;
...
x.stream().filter(isEven)
しかし、私は、同様の機能を使用することができます。
private static boolean isEven(Integer integer) {
return integer % 2 == 0;
}
...
x.stream().filter(MyClass::isEven)
は、私の知る限り、述語はもちろん、はるかに限ら中です機能は副作用などがあるかもしれません。しかし、Venkat Subramaniamのような人々は後者のソリューションを使用するので、私は本当に疑問に思っています:ここでの主な違いは何ですか?
私は、MRなしでは、再利用性に関して実際に制限されている述語のみを定義することができます。だから、これはきれいな書き込み方法は何ですか? MR、述語または実際のステートメント自体を使用していますか? – AdHominem
@AdHominemそれはあなたの文脈によって異なります。あなたが本当に述語を再利用するつもりでないなら、単純なラムダ式に固執してください。しかし、それを再利用し続けるつもりなら、メソッド自体を作成せずにいくつかのutilsクラスで静的な述語インスタンスを作成することをお勧めします –