关于JAVA回调函数的使用

回调函数顾名思义,就是你调用我的方法的时候我也在调你的方法,它一般满足以下几个条件:

①有一个CallBack接口,里面有被回调的方法

package spdb.demo.callBack;

/**  
* @Title: CallBack.java  
* @Package spdb.demo.callBack  
* @Description: 这是一个回调接口  
* @author John Hawkings  
* @date 2017年6月12日  
* @version V0.0  
*/
public interface CallBack {


    public void solve(String result);

}

②一个类A实现这个接口并调用B类的方法,这其中A类中得用B类的引用,可以在构造时赋值

package spdb.demo.callBack;

public class A implements CallBack {

    public B b;

    public A(B b){

        this.b = b;
    }


    public void testA(final String str){
        new Thread(new Runnable() {

            @Override
            public void run() {
                //注 : A.this用到的是多态
                b.testB(A.this, str);
            }
        }).start();;

    } 

    @Override
    public void solve(String result) {

        System.out.println("这是A类的回调函数,传过来的参数是:"+result);

    }

}


③B类中得有一个参数为callback的方法(CallBack callBack)

package spdb.demo.callBack;

public class B {

    public void testB(CallBack callBack,String str){
        System.out.println("这里是B类被调用了,传过来的参数是:"+str);
        callBack.solve("这里是B类呼叫A......");

    }

}

④A类对象调用B类的方法

public void testA(final String str){
        new Thread(new Runnable() {

            @Override
            public void run() {
                b.testB(A.this, str);
            }
        }).start();;

    } 

⑤B类可以在方法被调用后调用A 类中的回调方法

callBack.solve("这里是B类呼叫A......");

运行方法结果如下:

package spdb.demo.callBack;

public class Test {

    public static void main(String[] args) {
        B b = new B();
        A a = new A(b);
        a.testA("这里是A呼叫B。。。。。。");
    }

}

这里写图片描述

欢迎交流!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值