以下均是个人理解,如有错误请指出
一、首先定义回调接口,模拟执行成功和失败的两种回调方法:
public interface CommonCallBack {
public void onSuccess(String info);
public void onFailure(String info);
}
二、写一个测试类,需要一个回调接口成员变量,以及设置监听的方法,同时给一个状态变更的方法:
public class CallBackTest {
private CommonCallBack commonCallBack;
private int state = 10;
public void setStateCallBack(CommonCallBack commonCallBack){
this.commonCallBack = commonCallBack;
}
public void updateState(int state){
try {
this.state /= state;
commonCallBack.onSuccess("状态更新成功:state:" + this.state);
}catch (Exception e){
commonCallBack.onFailure("状态更新失败:" + e.getMessage());
}
}
}
通过setStateCallBack方法设置监听,updateState方法模拟状态变更,注意的是,成功执行会调用onSuccess方法,出现异常调用onFailure方法。
三、模拟设置监听,以及执行状态变更
public class MainClass {
public static void main(String[] args){
CallBackTest callBackTest = new CallBackTest();
//模拟设置状态变更监听
callBackTest.setStateCallBack(new CommonCallBack() {
@Override
public void onSuccess(String info) {
System.out.println(info);
}
@Override
public void onFailure(String info) {
System.out.println(info);
}
});
//执行状态更新操作
callBackTest.updateState(5);
callBackTest.updateState(0);
}
}
在程序入口new一个测试类对象,并通过setStateCallBack方法设置监听并实现具体的回调操作,这里我只是打印一下回调字符串,正常情况是根据成功失败做出后续操作。
通过updateState方法分别执行传入5和0,由于除以0会出现异常,因此分别执行成功和失败的回调,结果如下:
状态更新成功:state:2
状态更新失败:/ by zero