我需要一個與Collectors.toSet()
幾乎相同的收集器,但帶有自定義裝訂器。我希望能夠做到這樣的事情:擴展現有的流收集器實例
myCollector = Collectors.toSet();
myCollector.setFinisher(myCustomFinisher);
並且完成,但這似乎不可能。我能看到的唯一選擇是使用Collector.of()
重新創建Collectors.toSet()
,這不是非常乾燥。
有沒有辦法讓現有的收藏家和修正如上所述?
編輯
幾個問題的答案都建議是這樣的:
Collector<T, ?, Set<T>> toSet = Collectors.toSet();
return Collector.of(
toSet.supplier(),
toSet.accumulator(),
toSet.combiner(),
yourFinisher,
toSet.characteristics());
但是我的自定義整理實際上沒有返回集;它使用累積集合來返回其他內容。它在做的事實把我變成泛型地獄我還在翻箱倒櫃..
這不是最理想的解決方案,但是你可以爲'Collectors'創建一個包裝類,在那裏你可以實現'setFinisher' –