【发布时间】:2021-10-21 10:03:53
【问题描述】:
在实现 java.util.stream.Collector 时,我遇到了 IDENTITY_FINISH 特性。
我确实理解它,但我不明白它背后的原因。为什么不在需要的时候简单地为 finisher 函数使用 identity 函数呢?导致架构决策的用例(要求)是什么?
它似乎没有任何性能意义,如果是这样,那么通常应该考虑以丢弃方式优化恒等函数。我认为这是在抽象实现中不需要额外的约定。
【问题讨论】:
-
我能想到的原因之一是“由于我们无法比较
Function对象,因此无法检查完成者是否是身份。”。我们不能强迫每个人都使用Function.identity()。
标签: java java-stream collectors