Java中的闭包如何使API设计能够取代语言设计?

Mic*_*rry 13 java closures java-8

我可以看到闭包的一些好处,例如它们如何在简化现有库和使未来设计更容易和更高效方面占有一席之地.

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

(规范将改进语言)

e)使未来的API设计能够取代扩展Java平台的语言设计.

我很难看到这是怎么回事,语言设计肯定就是 - 语言本身的设计,除非Java使用闭包修改语言打开各种奇怪的API,否则不能被API取代(我非常怀疑会发生这种情况.)

任何人都可以对此有所了解,并且可能提供一些事先需要语言更改的例子,但是,通过添加闭包,不再需要一个?

Eri*_*k I 6

对于尚未阅读提案草案的任何人,此处稍后将在同一文档中提供更多详细信息:

闭包的添加简化了Java平台的发展.Sun的公共错误数据库中的许多现有语言RFE可以重新定位为接收闭包的方法的 API请求.通过添加库方法可以满足未来对其他语句表单的许多需求.


Arj*_*jms 6

API设计和语言功能在某些方面肯定可以互换.只需看看Java中的同步关键字.它是一个关键字,但如果语言非常冗长,也可以作为API实现.注释是另一个例子.另一种方法围绕@Stateless注释使得类事务中的所有方法也可以是语言关键字.

特别是闭包可以很容易地将"代码块"交给一个方法,然后可以用它做一些事情.

一个粗略的例子,每个都可以做出:

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

也许不是100%干净,因为语言的语法直接支持每个循环,但它允许每个人轻松体验类似语言的增强.