我可以看到闭包的一些好处,例如它们如何在简化现有库和使 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/