我想知道是否有任何方法可以在Java中实现。我认为,如果没有本地对闭包的支持,这是不可能的。
Java 8(2014年3月18日发布)不支持curring。可以将Missingfaktor在答案中发布的示例Java代码重写为:
import java.util.function.*;
import static java.lang.System.out;
// Tested with JDK 1.8.0-ea-b75
public class CurryingAndPartialFunctionApplication
{
public static void main(String[] args)
{
IntBinaryOperator simpleAdd = (a, b) -> a + b;
IntFunction<IntUnaryOperator> curriedAdd = a -> b -> a + b;
// Demonstrating simple add:
out.println(simpleAdd.applyAsInt(4, 5));
// Demonstrating curried add:
out.println(curriedAdd.apply(4).applyAsInt(5));
// Curried version lets you perform partial application:
IntUnaryOperator adder5 = curriedAdd.apply(5);
out.println(adder5.applyAsInt(4));
out.println(adder5.applyAsInt(6));
}
}
…这是非常好的。就个人而言,有了Java 8,我几乎没有理由使用替代的JVM语言(例如Scala或Clojure)。当然,它们提供了其他语言功能,但这不足以证明过渡成本和IDE /工具/库支持IMO的不足。
问题内容: Java是否有C ++的类似物: 我需要使用自己的数据类型。 问题答案: Java绝对没有结构:)但是,您在此处描述的内容看起来像JavaBean类。
问题内容: 我很困惑。我以为Java 8将会从石器时代诞生并开始支持lambda / closures。但是当我尝试这个: …说。恩,我想不是闭包。听起来好像是通过值而不是通过引用复制环境。 奖金问题! Android是否支持Java 8功能? 问题答案: 为什么,为什么,Java。为什么哦为什么。 您需要与相关的Oracle Java团队成员进行长时间的(私人)讨论,以获得真正的答案。(如果他们
问题内容: 尝试开始使用Google App Engine-可以在Java 8中使用吗? 我已按照此页面上的说明进行操作:https : //console.developers.google.com/start/appengine 选择“ Java”,我成功完成了Maven构建,但是当我访问localhost:8080时,没有任何运行。 说明中说“确保已安装Java 7 JDK”,但是我刚刚安装
问题内容: 谁能说Apache NetBeans 9.0是否支持Java 11,如果可以,那么实现该要求有什么要求? 目前,我可以在NetBeans 9.9中编译并运行Java 11代码,但是用红色下划线标记,错误消息是“找不到符号…”。 以下是我使用的pom.xml文件: 例如,应该如何更改pom文件? 问题答案: 没有NetBeans 9不支持Java 11(仅支持9和10)[ 1 ]。 计划
问题内容: 我在应用程序中看到,解析的XML文件中的xinclude在Java XSLT转换中不起作用。 但是,尽管我这样做: 我没有将变压器工厂专门设置为返回“ null”。 我的问题:默认的Java(1.6或6)是否支持xinclude,还是必须添加替代的XSLT解析器(如Apache Xerces)? 问题答案: 根据规范,自Java 1.5(5)以来一直提供支持。我相信XInclude支持
问题内容: 因此,我希望将其转换为这样的Java代码: JAXB是否可能? 曾经看到一些WebService Client存根生成器正在执行此操作,但也许不确定axis2 Webservice。 问题答案: 的 JAXB(JSR-222) 规范没有盖产生快速失败逻辑到域模型。现在,一种常见的做法是以注释(或XML)的形式表示验证规则,并对它们进行验证。 Bean验证(JSR-303) 对此进行了标