2
我試圖找出如何工作的。
我打算列出我認爲正在發生的事情,希望有人能告訴我我在地方是錯的。或者告訴我這是怎麼工作的。lambda表達式都被轉換爲BiConsumer
public BiConsumer<List<T>, T> accumulator() {
return List::add;
}
- 的方法稱爲蓄能器接受什麼並返回一個BiConsumer方法。
accumulator
返回參考到add
方法上的List
作爲BiConsumer
- 上的
List
實際add
方法實際上是一個Function<T, Boolean>
的上下文中,發生在T
,並返回一個布爾
這是我進入猜測領域的地方。
- 它調用
add
方法,對List
那就是BiConsumer
的第一個參數的實例。
我知道內部必須做的事情。
public BiConsumer<List<T>, T> accumulator() {
return (list, item) -> list.add(i);
}
我明白,它可以忽略add
方法的返回類型,所以它可以假裝Function<A, B>
是Consumer<A>
但我就是不明白魔法,輪流一個BiConsumer
運行Consumer
或Function
在BiConsumer
的第一個參數的實例。
所以'Function'方法可以變成'BiFunctions'以及'BiConsumers'。很高興知道。 – WORMSS
@WORMSS如果你認爲我的答案回答你的問題,請考慮接受它! – Sweeper
好吧,你的答案是'因爲語言規範說so.' ..不是最大的。您的答案告訴我的東西,我不知道,但不完全是最好的答案。所以我會等待,看是否有人能除此之外。 – WORMSS