美文网首页
java回调函数

java回调函数

作者: 顶儿响叮当 | 来源:发表于2016-10-17 10:16 被阅读50次

    利用接口来实现回调,即在调用回调函数的类中实现接口,并实现接口中的方法即回调的方法,被调用类中存在接口的熟悉,并将调用类中的接口实例赋值给被调用类中,被调用类中通过调用这个接口的方法来实现回调。java中没有函数的指针,所以通过接口(调用类实现接口的方法,即回调的函数)来实现。
    那么这个接口能否用抽象类来代替?其实是可以的,抽象类也可以用匿名的方式实现。

    1、回调接口
    public interface Callback {
    
       String callBack();
     }
    
    2、被调用者
    public class Another {
      private Callback callback;
      //调用实现类的方法
      public void setCallback(Callback callback) {
        this.callback = callback;
      }
        //业务需要的时候,通过委派,来调用实现类的具体方法
      public void doCallback(){
        //...相应操作
        //在合适位置调用回调方法
        System.out.println(callback.callBack());
      }
    }
    
    3、测试回调函数
    public class TestCallcack {
      public static void main(String[] args) {
        //创建调用者的实现类
        Another another = new Another();
        //将回掉接口注册到实现类中
        another.setCallback(new Callback() {  //匿名类实现接口
          @Override
          public String callBack() {
            //通过实现接口函数,来注册回调函数
            return "you are a pig";
          }
        });
        //执行函数,将回调setCallback中实现接口函数
        another.doCallback();
      }
    }
    
    

    其中TestCallback中用匿名类来实现接口Callback

            new Callback(){
                @Override
                  public String callBack(){
                     //....
                  }
             }  
    
    

    异步调用可以新建一个线程去执行函数调用,如下:

            new Thread(new Runnable() {
                
                public void run() {
                    // TODO Auto-generated method stub
                    
                    Another a = new Another();
                    
                    a.setCallback(new Callback() {  //匿名类实现接口
                          
                          public String callBack() {
                            //通过实现接口函数,来注册回调函数
                            return "you are a pig";
                          }
                        });
                    a.doCallback();
                }
            }).start();
    

    异步回调参考下面这篇文章:

    http://www.cnblogs.com/puyangsky/p/5581051.html

    相关文章

      网友评论

          本文标题:java回调函数

          本文链接:https://www.haomeiwen.com/subject/etvayttx.html