您的位置:首页 > 编程语言 > Java开发

关于JAVA回调函数的使用

2017-06-12 16:45 295 查看
回调函数顾名思义,就是你调用我的方法的时候我也在调你的方法,它一般满足以下几个条件:

①有一个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。。。。。。");
}

}




欢迎交流!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: