【发布时间】:2020-07-07 21:17:30
【问题描述】:
背景
在 Effective Java 的第 44 条中,作者建议使用标准功能接口(而不是定义自定义接口)。关于java.util.function包,作者:
-
列出了六种基本形式:
UnaryOperator<T>、BinaryOperator<T>、Predicate<T>、Function<T, R>、Supplier<T>、Consumer<T>; -
解释了对基本类型进行操作的六种基本形式中的每一种都有三种变体,例如
IntPredicate、LongBinaryOperator和LongFunction<int[]>; -
在下一段中提到了以下内容:
Function接口还有九个附加变体...如果源是原语并且结果是对象引用,则在 Function 前加上SrcToObj,例如DoubleToObjFunction(三个变体)。
问题
作者提到的DoubleToObjFunction在哪里?
请注意,在上面的第三个要点中,他使用了“九个附加变体”一词,因此不可能指的是 DoubleFunction,因为这将在第二个要点中涵盖。
我已尝试在引用中对函数名称进行基本的 Google 搜索,还查看了 java.util.function 上的最新 Java 文档,但似乎找不到任何东西。
【问题讨论】:
-
@Jorn 这是否意味着本书应该有两个额外的勘误表:(1)将引用从
DoubleToObjFunction更正为DoubleFunction; (2) 改写“有九个 additional 变体...”,因为上一段中提到了DoubleFunction变体(具体来说,LongFunction<int[]>),并且不会是“额外的”。 -
@yongjieyongjie 对于那些无法参考这本书的人来说,这句话并不是很清楚。您能否将点函数接口有九个附加变体...连接起来并完成参考?此外,
DoubleToObjFunction的三个变体可以指向DoubleFunction、DoubleToIntFunction和DoubleToLongFunction。
标签: java functional-interface effective-java