これはどのように動作するかを試しています。
私は何が起こっていると考えているかを列挙し、誰かが私が場所が間違っていると私に言うことができることを願っています。また、どのように/なぜこれが機能するかを教えてください。ラムダ関数がBiConsumerに変換される
public BiConsumer<List<T>, T> accumulator() {
return List::add;
}
- 何も受け付けず、BiConsumer方法を返すアキュムレータと呼ばれる方法。
accumulator
はT
取り込み、List
上の実際のadd
方法が実際Function<T, Boolean>
あるBiConsumer
- として
List
の文脈でadd
方法に参照を返すブール
を返しますこれが私が推測の世界に入る場所です。
- それは
BiConsumer
の第1引数であるList
のインスタンスに、add
メソッドを呼び出しています。
私は内部で行う必要があることを知っています。
public BiConsumer<List<T>, T> accumulator() {
return (list, item) -> list.add(i);
}
は、私はそれがadd
メソッドの戻り値の型を無視することができることを理解し、それはFunction<A, B>
がConsumer<A>
であるふりをすることができますしかし、私はちょうどBiConsumer
が実行変わる黒魔術を理解していませんBiConsumer
の最初の引数のインスタンス上のConsumer
またはFunction
です。
したがって、 'Function'メソッドは' BiFunctions'と 'BiConsumers'に変換できます。知っておいてよかった。 – WORMSS
@WORMSS私の答えがあなたの質問に答えると思うなら、それを受け入れることを検討してください! – Sweeper
あなたの答えは '言語スペックがそう言っていたからです.' ..最高ではありませんあなたの答えは私には分かりませんでしたが、正確には最良の答えではありません。それに加えてください。 – WORMSS