Closure与回调

Closure是一种能调用的对象,它记录了创建它的那个作用域信息。读过这段定义你就能看出,内部类就是一种面向对象的closure,因为它不仅保存了宿主类的所有信息(创建它作用域),而且还自动保存指向那个宿主类对象的reference,更何况它还有权操控这个对象的所有成员,即使它们是private的。

在要求Java提供指针机制的众多议论中,最具有吸引力一条就是,要让它呢能进行回调。有了回调,你就能给别的对象一段信息,然后在未来某个时点,让它反过来调用发起方对象了。但是,如果是用指针来实现回调,那你就只能指望程序员了,希望它们不要误用指针。正如你所看到的,Java在这个问题上更为谨慎,因此它没有指针,内部类所提供的closure是一个完美的解决方案——它比指针更灵活,也更安全。

«1»