今天,顺便研究了一下回调机制。关于回调,网上很多类似教程,在这里不重复,我只是为了演示回调的一个具体实现。
项目截图
为什么使用回调?可能很多人不太理解,我们来考虑一种情况:比如,一班情况下,我们写用户登录这个功能的时候,判断成功与否,一班都是靠返回的标记 比如1 0来辨别,然后外部方法再来处理结果。这样不免增加了时间复杂度。为了让方法本身去处理,我们特地引入了回调机制。
下面是回调接口
package interfce;
import java.util.List;
public interface CallBackInterface {
public void onSuccess(List<String>list);
public void onFailed(int errCode,String info);
}
回调类
package listener;
import java.util.ArrayList;
import java.util.List;
import interfce.CallBackInterface;
public class Listener {
public int getErrCode() {
return errCode;
}
public void setErrCode(int errCode) {
this.errCode = errCode;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public CallBackInterface getCallBackInterface() {
return callBackInterface;
}
public void setCallBackInterface(CallBackInterface callBackInterface) {
this.callBackInterface = callBackInterface;
}
private int errCode;
private String info;
private List<String> list;
private CallBackInterface callBackInterface;
public Listener(CallBackInterface callBackInterface) {
this.callBackInterface = callBackInterface;
list = new ArrayList<String>();
/*
* list.add("1"); list.add("2"); list.add("3"); list.add("4");
* list.add("5"); list.add("6");
*/
if (list.size() == 0) {
System.out.println(".....");
this.getCallBackInterface().onFailed(404, "找不到页面");
this.getCallBackInterface().onSuccess(null);
} else {
this.getCallBackInterface().onSuccess(list);
this.getCallBackInterface().onFailed(200, "成功");
}
}
}
最后是主函数
package main;
import java.util.List;
import interfce.CallBackInterface;
import listener.Listener;
public class Main {
public static void main(String[] args) {
System.out.println("....");
Listener listener = new Listener(new CallBackInterface() {
@Override
public void onSuccess(List<String> list) {
}
@Override
public void onFailed(int errCode, String info) {
System.out.println(errCode + ": ->" + info);
}
});
}
}
我们把函数最终的结果,交给他自己去处理,而不是我们再来接受参数。