Thinking in Java(9)-closures and callbacks

来源:互联网 发布:布里斯班 知乎 编辑:程序博客网 时间:2024/05/16 05:06

对closures and callbacks不是很理解,先记下来慢慢理解QAQ:

package interfaces.classprocessor;interface Incrementable{    void increment();}class Callee1 implements Incrementable {    private int i = 0;    public void increment()    {        i++;        System.out.println(i);    }}class MyIncrement {    public  void increment()    {        System.out.println("Other operation");    }    static void f(MyIncrement mi){        mi.increment();    }}class Callee2 extends MyIncrement {    private int i = 0;    public void increment() {        super.increment();        i++;        System.out.println(i);    }private class Closure implements Incrementable {    public void increment()    {        Callee2.this.increment();    }}Incrementable getCallbackReference() {    return new Closure();}}class Caller {    private Incrementable callbackReference;    Caller(Incrementable cbh) {        callbackReference = cbh;    }    void go() {        callbackReference.increment();    }}public class Callbacks {    public static void main(String[] args) {        // TODO Auto-generated method stub        Callee1 c1 = new Callee1();        Callee2 c2 = new Callee2();        MyIncrement.f(c2);        Caller caller1 = new Caller(c1);        Caller caller2 = new Caller(c2.getCallbackReference());        caller1.go();        caller1.go();        caller2.go();        caller2.go();    }}

output:

Other operation112Other operation2Other operation3
1 0
原创粉丝点击