70 Java 闭包(Closure)和回调

来源:互联网 发布:成都网络作家吸毒 编辑:程序博客网 时间:2024/05/19 05:03
package new20140517;/** * 闭包(Closure)和回调 * ——闭包时一种能被调用的对象,它保存了创建它的作用域信息。 * @author x * *//** * Teachable 接口——教学工作 * @author x * */interface Teachable{void work();}/** * 类Programmer——编程工作 * @author x * */class Programmer{private String name;//两个构造器public Programmer(){};public Programmer(String name){this.name=name;}public String getName() {return name;}public void setName(String name) {this.name = name;}public void work(){System.out.println(name+":"+"编程...");}}/** * TeachableProgrammer 包含一个仿闭包的内部类 * @author x * */class TeachableProgrammer  extends Programmer{public TeachableProgrammer(){};public TeachableProgrammer(String name){super(name);}//教学工作依然由TeachableProgrammer类定义private void teach(){System.out.println(getName()+"教师在讲台上讲解...");}private class Closure implements Teachable{/** * 非静态内部类回调外部类实现work方法,非静态内部类引用的作用仅仅是想客户类 * 提供一个回调外部类的途径 */@Overridepublic void work() {// TODO Auto-generated method stubteach();}}/** * 返回一个非静态内部类引用,外部类通过该非静态内部类引用来回调外部类的方法 *  * @return */public Teachable getCallbackReference(){return new Closure();}}public class Test1 {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubTeachableProgrammer tp=new TeachableProgrammer("Tom");//调用从Programmer继承来得方法tp.work();//Tom:编程...tp.getCallbackReference().work();//Tom教师在讲台上讲解...}}

0 0