返回结果实体类ResultData

本文深入解析了ResultData泛型类的实现细节,该类用于封装API调用的响应结果,包括状态码、返回信息和扩展数据。文章介绍了如何使用静态方法创建成功或失败的响应,以及如何设置和获取类的各种属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.yxb.common.base.entity;

import java.util.HashMap;
import java.util.Map;

public class ResultData<T extends Object>  {
    public static Integer SUCCESS = 0;
    public static Integer FAIL = 1;
    private Integer code;
    private T data;
    private String rtnInfo;
    private Map<String,Object> expandData = new HashMap<String,Object>();

    public ResultData() {
        this.code = FAIL;
        this.rtnInfo = "网络异常,请稍后重试!";
    };

    public ResultData(int code, String rtnInfo) {
        this.code = code;
        this.rtnInfo = rtnInfo;
    }

    public ResultData(int code, String rtnInfo, T data){
        this.code = code;
        this.rtnInfo = rtnInfo;
        this.data = data;
    }

    //成功直接返回
    public static ResultData ok() {
        return new ResultData(SUCCESS, "操作成功!");
    }

    //成功 返回数据
    public static ResultData ok(Object data,String... returnInfo) {
        if(returnInfo.length > 0){
            return new ResultData(SUCCESS,returnInfo[0],data);
        }else{
            return new ResultData(SUCCESS,"操作成功!",data);
        }
    }

    //失败直接返回 ResultData.fail()
    public static ResultData fail() {
        return new ResultData(ResultData.FAIL, "服务器异常!");
    }

    //失败直接返回 ResultData.fail(msg)
    public static ResultData fail(String msg) {
        return new ResultData(ResultData.FAIL, msg);
    }

    //失败直接返回 ResultData.fail(msg)
    public static ResultData fail(Integer code,String msg) {
        return new ResultData(code, msg);
    }

    //失败 根据code返回错误原因
    public static ResultData fail(Integer code){
        return new ResultData().initCodeAndDesp(code);
    }

    public ResultData initCodeAndDesp(int code){
        this.code = code;
        this.rtnInfo = ResultDataDetail.resultMap.get(String.valueOf(code));
        return this;
    }

    public ResultData initCodeAndDesp(int code,String rtnInfo){
        this.code = code;
        this.rtnInfo = rtnInfo;
        return this;
    }

    public ResultData initCodeAndDesp(){
        this.code = ResultData.SUCCESS;
        this.rtnInfo = "操作成功!";
        return this;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public Integer getCode() {
        return code;
    }

    public T getData() {
        return data;
    }

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

    public String getRtnInfo() {
        return rtnInfo;
    }

    public void setRtnInfo(String rtnInfo) {
        this.rtnInfo = rtnInfo;
    }

    public Map<String, Object> getExpandData() {
        return expandData;
    }

    public void setExpandData(Map<String, Object> expandData) {
        this.expandData = expandData;
    }

    @Override
    public String toString() {
        return "ResultData{" +
                "code=" + code +
                ", data=" + data +
                ", rtnInfo='" + rtnInfo + '\'' +
                ", expandData=" + expandData +
                '}';
    }


}

### 关于Java Web开发中的统一返回类设计 在Java Web应用程序中,为了保持前后端数据交换的一致性和简化错误处理逻辑,通常会采用一种称为“统一返回”的模式。这种模式通过创建一个通用的数据结构来封装所有的API响应信息[^1]。 #### 统一返回类的设计原则 - **状态码 (code)**: 表示操作的结果,成功与否以及具体的失败原因。 - **消息提示 (message)**: 对应状态码的文字描述,帮助理解具体发生了什么情况。 - **业务数据 (data)**: 存储实际要传递给前端的信息或资源列表等有用的内容。 基于上述原则可以构建如下所示的基础版本: ```java public class Result<T> { private Integer code; private String message; private T data; public static <T> Result<T> success(T data){ return new Result<>(0, "success", data); } public static <T> Result<T> error(Integer errorCode, String errorMessage){ return new Result<>(errorCode, errorMessage, null); } protected Result() {} protected Result(Integer code, String msg, T resultData) { this.code = code; this.message = msg; this.data = resultData; } // Getters and Setters omitted for brevity. } ``` 此`Result`泛型类能够灵活适应不同类型的返回值需求,并且提供了便捷的方法用于快速实例化成功的响应或是带有特定错误详情的对象。 当涉及到更复杂的场景时,还可以考虑增加额外字段如时间戳(timestamp),分页参数(pageInfo)等等以满足更加细致化的应用场景要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值