1. 程式人生 > >java介面回撥

java介面回撥

兩個類:Dog和Cat,一個介面CallBack。

1 Dog類,實現介面CallBack介面:

public class Dog implements CallBack {

    private Cat cat;
    public Dog(Cat li){
        this.cat=li;
    }
    public void ask(String s){
        System.out.println("dog is asking");
        //呼叫cat的ask方法,並把當前物件註冊進去
        cat.ask(this,s);
    }
    //回撥函式
    @Override
    public void solve(String s) {
        System.out.println("執行回撥函式");
        System.out.print(s);
    }
}
2.Cat類
public class Cat {
    private CallBack callBack;
    public void ask(CallBack callBack,String s){
        System.out.println("cat:ask");
        callBack.solve(s);
    }
    //內部類進行介面回撥
    public void  setCallBack(CallBack callBack){
        System.out.println("Cat:setCallBack");
        callBack.solve("執行回撥函式");
    }
}
3.測試程式碼
cat=new Cat();
dog=new Dog(cat);
dog.ask("dog is asking");

4.輸出結果:
dog is asking
cat:ask
執行回撥函式
dog is asking

分析:dog的ask方法呼叫cat的ask方法,cat的ask方法回撥dog的solve方法,dog的solve方法是回撥方法

****匿名內部類實現介面回撥****

a.測試程式碼如下:

  cat=new Cat();
        cat.setCallBack(new CallBack() {
          @Override
          public void solve(String s) {
              System.out.println("執行回撥函式引數-s   "+s);
              System.out.println("內部類回撥函式");
          }
      });
輸出結果:
Cat:setCallBack
執行回撥函式引數-s   執行回撥函式
內部類回撥函式

分析:java多型,cat.setCallBack方法把一個實現CallBack介面的物件註冊到cat中,實現回撥