突然想起了,今天刚自学了java的接口回调,来整理一下。
实例:我经常叫我同学帮我买早饭,就拿这个做例子。
场景:我在上班时给他发了个短信:“帮我买一下早饭”然后我就去坐车了;然后他收到信息后,就去买早饭了,买到后就给我回复短信:买到了。
然后就开始实现:
1、一个回调接口:ICallBack.java
/**
* 回调接口
* @author Administrator
*
*/
public interface ICallBack {
/**
* 回调函数
* @param str
* @throws Exception
*/
public void callBack(String str)throws Exception;
}
2、接口实现类(我)
/**
* 回调接口实现类
* @author Administrator
*
*/
public class User01 implements ICallBack{
//User02的对象,就是我同学
private User02 user02=null;
public User01() {
user02=new User02();
}
public User01(User02 user02){
this.user02=user02;
}
@Override
public void callBack(String str) throws Exception {
System.out.println("user01收到结果:"+str);
}
/**
*实现我发信息给他,然后去坐车了
*/
public void method(String send){
System.out.println("user01告诉user02:"+send);
//线程实现异步
new Thread(new Runnable() {
@Override
public void run() {
//让user02去执行特定方法
try {
user02.thisMethod(User01.this, send);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
//做其他事情
others();
}
/**
*我坐车的方法
*/
private void others() {
System.out.println("user01在坐车...");
}
}
3、这个执行类(我同学)
public class User02 {
/**
*收到信息,并实行操作
*/
public void thisMethod(ICallBack iCallBack,String string ) throws Exception {
//System.out.println("执行语句:"+string);
//模拟其他处理
for(int i=0;i<10;i++) {
}
//结果
String result="结果";
//调用User01的回调方法
iCallBack.callMethod(result);
}
}
4、测试类:Test.java
public class Test {
public static void main(String[] args) {
User02 user02=new User02();
User01 user01=new User01(user02);
user01.method("帮我买一份早饭");
}
}