有时候,我们可能想在自己的也会方法中通过不同的中间返回结果,来执行不同的操作,听起来似乎可以使用if-else来进行分支实现,但是有时候背后的业务十分复杂,或者是中间业务根本没有返回值等,这时候就很难通过if-else来判断。
效果
以下的代码中,当send()方法成功处理时,执行onSuccess()方法,当send()方法出现异常时,执行onException()方法。
public class UserServiceImpl {
public static void getSomething(){
MessageSendProducer messageSendProducer = new MessageSendProducer();
messageSendProducer.send(10, new SendCallback() {
@Override
public void onSuccess(Result result) {
//成功时候的处理。。。
System.out.println("成功啦");
}
@Override
public void onException(Throwable e) {
//异常时候的处理。。。
System.out.println("异常信息:"+e);
}
});
}
}
实现
定义一个回调接口
public interface SendCallback {
void onSuccess(final Result result);
void onException(final Throwable e);
}
定义一个业务处理器
public class MessageSendProducer{
public void send(Integer a, SendCallback sendCallback) {
try{
int b = 10/a;
if(b!=0){
Result result = new Result();
result.setCode(200);
result.setMsg("success!!!");
sendCallback.onSuccess(result);
}
}catch (Exception e){
sendCallback.onException(e);
}
}
}
定义部分就以上完成了,接下来是怎么使用。
使用
public class UserServiceImpl {
public static void getSomething(int a){
MessageSendProducer messageSendProducer = new MessageSendProducer();
messageSendProducer.send(a, new SendCallback() {
@Override
public void onSuccess(Result result) {
//成功时候的处理。。。
System.out.println(result);
System.out.println("成功啦");
}
@Override
public void onException(Throwable e) {
//异常时候的处理。。。
System.out.println("异常信息:"+e);
}
});
}
public static void main(String[] args) {
getSomething(10);
getSomething(0);
}
}
结果
当我们执行main方法时
成功
异常