gpt4 book ai didi

java - Java 8 是否支持函数作为一等对象?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:35:42 25 4
gpt4 key购买 nike

我今天阅读了有关 Java 8 版本的信息。但是我不完全理解 Java 8 中引用方法的概念。这是否意味着 Java 现在支持将函数作为一流对象?我已经看到,如何构造对函数的引用。但在我看来,他们提供的 Converter 对象的功能非常有限。现在在 Java 中是否可行:

  • 将函数作为参数传递给另一个函数?
  • 将函数作为另一个函数的返回值返回?
  • 那么闭包呢?它们是否像函数式语言一样完全实现,或者它们确实有一些限制?在我看来,存在一些限制(您不能更改您在闭包中引用的变量的值,它必须标记为 final 等)。

最佳答案

一等函数最重要的方面已经融入现有的 Java 类型系统。没有引入真正的函数类型;任何单一方法接口(interface)都是它自己的“函数类型”。因此,对于前两个问题,您可以随意传递此类功能接口(interface)的实例。

语义有许多微妙的变化,允许使用 lambda 语法/方法引用来实现任何此类接口(interface)。您甚至可以使用高阶函数,例如 compose,它返回通用 Function 类型,并将其传递给需要兼容函数式接口(interface)类型的方法。

you cannot change the value of the variable you reference in a closure

这不是特定于 Java 的限制。事实上,大多数 FP 语言都不支持任何类型的可变变量。请注意,没有要求在变量上使用 final 关键字; effectively final 的概念解决了这个问题。

关于java - Java 8 是否支持函数作为一等对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22530345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com