【问题标题】:Effective Java Item 44 - Where is the `DoubleToObjFunction` in the standard library?Effective Java Item 44 - 标准库中的“DoubleToObjFunction”在哪里?
【发布时间】: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>

  • 解释了对基本类型进行操作的六种基本形式中的每一种都有三种变体,例如IntPredicateLongBinaryOperatorLongFunction<int[]>

  • 在下一段中提到了以下内容:

    Function 接口还有九个附加变体...如果源是原语并且结果是对象引用,则在 Function 前加上 SrcToObj,例如 DoubleToObjFunction(三个变体)。

问题

作者提到的DoubleToObjFunction在哪里?

请注意,在上面的第三个要点中,他使用了“九个附加变体”一词,因此不可能指的是 DoubleFunction,因为这将在第二个要点中涵盖。

我已尝试在引用中对函数名称进行基本的 Google 搜索,还查看了 java.util.function 上的最新 Java 文档,但似乎找不到任何东西。

【问题讨论】:

  • @Jorn 这是否意味着本书应该有两个额外的勘误表:(1)将引用从DoubleToObjFunction 更正为DoubleFunction; (2) 改写“有九个 additional 变体...”,因为上一段中提到了DoubleFunction 变体(具体来说,LongFunction<int[]>),并且不会是“额外的”。
  • @yongjieyongjie 对于那些无法参考这本书的人来说,这句话并不是很清楚。您能否将点函数接口有九个附加变体...连接起来并完成参考?此外,DoubleToObjFunction 的三个变体可以指向DoubleFunctionDoubleToIntFunctionDoubleToLongFunction

标签: java functional-interface effective-java


【解决方案1】:

Java 8中没有DoubleToObjFunction、LongToObjFunction和IntToObjFunction接口,但是作者在第44项中没有提到的接口ToDoubleFunction、ToLongFunction和ToIntFunction。可能是勘误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多