首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

闭包跟回调

2013-09-06 
闭包和回调闭包(Closure)是一种能被调用的对象,它保存了创建它的作用域信息,java7虽然没有显式的支持闭包,

闭包和回调

闭包(Closure)是一种能被调用的对象,它保存了创建它的作用域信息,java7虽然没有显式的支持闭包,但对于非静态内部类而言,它不仅记录了其外部类的详细信息,还保留了一个创建非静态内部类对象的引用,并且可以直接调用外部类的private成员,因此可以把非静态被不累当成面向对象领域的闭包。

通过这种方必报的非静态内部类,可以很方便地实现回调功能,回调就是某个方法一旦获得了内部类对象的引用来调用其外部类的方法,这是一种非常灵活的功能。

public class TeachableProgrammerTest{public static void main(String[] args) {TeachableProgrammer tp = new TeachableProgrammer("李刚");//直接调用TeachableProgrammer类从Programmer类继承到的work方法tp.work();//表面上调用的是Closure的work方法,//实际上是回调TeachableProgrammer的teach方法tp.getCallbackReference().work();}}

上面程序中加粗字部分,表面上调用了Teachable对象(实际上是Closure对象)的work方法,实际上回调了TeachableProgrammer对象的teach方法。内部类对象可以很方便地回调其外部类的Field、方法,这样就可以让编程更加灵活。




热点排行