有时候,我们可能想在自己的也会方法中通过不同的中间返回结果,来执行不同的操作,听起来似乎可以使用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方法时

成功

image-1668263796198

异常

image-1668263831478