java - Java 中的闭包将如何使 API 设计取代语言设计?

标签 java closures java-8

我可以看到闭包的一些好处,例如它们如何在简化现有库和使 future 的设计更轻松、更高效方面占有一席之地。

但是,提案草案 (http://www.javac.info/consensus-closures-jsr.html) 中提到的关键点之一是在第 2.5 节的 e 点:

(The specification will improve the language by)

e) enabling future API design to replace language design for extending the Java platform.

我正在努力了解这是怎么回事,当然语言设计就是这样 - 语言本身的设计,并且不能被 API 取代,除非 Java 使用闭包打开各种奇怪的 API修改语言(我非常怀疑这会发生。)

任何人都可以阐明这一点,也许可以提供一个示例,说明以前需要更改语言但在添加闭包后不再需要更改语言吗?

最佳答案

API 设计和语言功能在某些方面绝对可以互换。只要看看 Java 中的同步关键字之类的东西。它是一个关键字,但如果语言足够简洁,也可以作为 API 实现。注释是另一个例子。使类中的所有方法都具有事务性的 @Stateless 注释的另一种方式也可能是语言关键字。

尤其是闭包,可以轻松地将“代码块”传递给方法,然后方法可以对其进行处理。

一个粗略的例子,可以为每个人做一个:

for_each(myFooList, #(Foo foo) { 
   String something = foo.getBar() + foo.getKaz();
   System.out.println(something);
});

可能不如直接由语言语法支持的 for each 循环 100% 干净,但它允许每个人轻松体验类似语言的增强功能。

关于java - Java 中的闭包将如何使 API 设计取代语言设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4764539/

相关文章:

java - 在没有数组变量的情况下迭代java中的静态数组

swift - 完成语句关闭错误

java - 通过将数组中的值与现有键相加来构造 HashMap,而不覆盖键

swift - 如何知道闭包是否归类所有?

java - 我可以在泛型类参数上调用静态方法吗

java - 重用部分流映射和过滤来组成两个不同的结果

java - 在java中绘制ASCII艺术

java - 附加到图像文件

java - 通过列和常量连接实现 Hibernate 多对一

java - java中的高阶函数和闭包