Java对返回值的封装

定义自己所需要的返回值类型

public class CodeMsg implements Cloneable {
    private int retCode;
    private String message;

    // 通用异常
    public static CodeMsg SUCCESS = new CodeMsg(0, "success");
    public static CodeMsg EMPTY_PARAM_ERROR = new CodeMsg(400, "参数为空");
    public static CodeMsg INTER_ERROR = new CodeMsg(505, "服务端异常");

    private CodeMsg(int retCode, String message) {
        this.retCode = retCode;
        this.message = message;
    }

    public int getRetCode() {
        return retCode;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return (CodeMsg) super.clone();
    }
}

返回值的封装

public class Result<T> {
    private String message;
    private int retCode;
    private T data;

    private Result(T data) {
        this.retCode = 200;
        this.message = "成功";
        this.data = data;
    }

    private Result(CodeMsg cm) {
        if (cm == null) {
            return;
        }
        this.retCode = cm.getRetCode();
        this.message = cm.getMessage();
    }

    /**
     * 成功时候的调用
     *
     * @return
     */
    public static <T> Result<T> success(T data) {
        return new Result<T>(data);
    }

    /**
     * 成功,不需要传入参数
     *
     * @return
     */
    @SuppressWarnings("unchecked")
    public static <T> Result<T> success() {
        return (Result<T>) success("");
    }

    /**
     * 失败时候的调用
     *
     * @return
     */
    public static <T> Result<T> error(CodeMsg cm) {
        return new Result<T>(cm);
    }

    /**
     * 失败时候的调用,扩展消息参数
     *
     * @param cm
     * @param msg
     * @return
     */
    public static <T> Result<T> error(CodeMsg cm, String msg) {
        CodeMsg newCodeMsg = null;
        try {
            newCodeMsg = (CodeMsg) cm.clone();
        } catch (Exception e) {
            e.printStackTrace();
        }
        newCodeMsg.setMessage(cm.getMessage() + "--" + msg);
        return new Result<T>(newCodeMsg);
    }

    public T getData() {
        return data;
    }

    public String getMessage() {
        return message;
    }

    public int getRetCode() {
        return retCode;
    }


}

参考返回码定义

// 成功状态码
public static final int SUCCESS = 1;

// -------------------失败状态码----------------------
// 参数错误
public static final int PARAMS_IS_NULL = 10001;// 参数为空
public static final int PARAMS_NOT_COMPLETE = 10002; // 参数不全
public static final int PARAMS_TYPE_ERROR = 1003; // 参数类型错误
public static final int PARAMS_IS_INVALID = 10004; // 参数无效

// 用户错误
public static final int USER_NOT_EXIST = 20001; // 用户不存在
public static final int USER_NOT_LOGGED_IN = 20002; // 用户未登陆
public static final int USER_ACCOUNT_ERROR = 20003; // 用户名或密码错误
public static final int USER_ACCOUNT_FORBIDDEN = 20004; // 用户账户已被禁用
public static final int USER_HAS_EXIST = 20005;// 用户已存在

// 业务错误
public static final int BUSINESS_ERROR = 30001;// 系统业务出现问题

// 系统错误
public static final int SYSTEM_INNER_ERROR = 40001; // 系统内部错误

// 数据错误
public static final int DATA_NOT_FOUND = 50001; // 数据未找到
public static final int DATA_IS_WRONG = 50002;// 数据有误
public static final int DATA_ALREADY_EXISTED = 50003;// 数据已存在

// 接口错误
public static final int INTERFACE_INNER_INVOKE_ERROR = 60001; // 系统内部接口调用异常
public static final int INTERFACE_OUTER_INVOKE_ERROR = 60002;// 系统外部接口调用异常
public static final int INTERFACE_FORBIDDEN = 60003;// 接口禁止访问
public static final int INTERFACE_ADDRESS_INVALID = 60004;// 接口地址无效
public static final int INTERFACE_REQUEST_TIMEOUT = 60005;// 接口请求超时
public static final int INTERFACE_EXCEED_LOAD = 60006;// 接口负载过高

// 权限错误
public static final int PERMISSION_NO_ACCESS = 70001;// 没有访问权限

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值