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