Java结果统一返回封装类

2021-01-08  本文已影响0人  韩朝阳

结果枚举类

public enum ResultEnum {

    SUCCESS(200, "成功"),

    NO_PERMISSION(403, "权限不足"),

    NOT_FOUND(404, "资源不存在"),

    SERVER_ERROR(500, "服务器错误");

    private final Integer code;

    private final String message;

    ResultEnum(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public Integer getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    @Override
    public String toString() {
        return "ResultEnum{" +
                "code=" + code +
                ", message='" + message + '\'' +
                '}';
    }

}

结果类

import com.fasterxml.jackson.annotation.JsonIgnore;

public class Result<D> {

    private final Integer code;

    private final String message;

    private D data;

    public Result(ResultEnum resultEnum) {
        this.code = resultEnum.getCode();
        this.message = resultEnum.getMessage();
    }

    public Result(ResultEnum resultEnum, D data) {
        this.code = resultEnum.getCode();
        this.message = resultEnum.getMessage();
        this.data = data;
    }

    public Integer getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    public D getData() {
        return data;
    }

    public void setData(D data) {
        this.data = data;
    }

    @Override
    public String toString() {
        return "Result{" +
                "code=" + code +
                ", message='" + message + '\'' +
                ", data=" + data +
                '}';
    }

    @JsonIgnore
    public boolean isSuccess() {
        return this.code.equals(ResultEnum.SUCCESS.getCode());
    }

}

使用

public class Test {

    // 成功,无返回数据
    public Result<Void> test1() {
        return new Result<>(ResultEnum.SUCCESS);
    }

    // 成功,有返回数据
    public Result<Object> test2() {
        return new Result<>(ResultEnum.SUCCESS, new Object());
    }
    
    // 错误,无返回数据
    public Result<Void> test3() {
        return new Result<>(ResultEnum.NOT_FOUND);
    }
    
    // 错误,有返回值
    public Result<Object> test4() {
        return new Result<>(ResultEnum.SERVER_ERROR, new Object());
    }
    
    // 方法间调用
    public void test5() {
        Result<Void> result = this.test1();
        if(result.isSuccess()) {
            // Do something
        }
    }

}
上一篇下一篇

猜你喜欢

热点阅读