springboot中,如何将自己封装的返回格式代码段的new改为注入的形式?

public class ApiReturn<T> {
    private Integer code;
    private String mes;

    public T getData() {
        return data;
    }

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

    private T data;

    public Integer getCode() {
        return code;
    }

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

    public String getMes() {
        return mes;
    }

    public void setMes(String mes) {
        this.mes = mes;
    }
}
@Component
public class ApiReturnComponent<T> {
    /**
     * api返回格式整合
     * @param code
     * @param msg
     * @param data
     * @return ApiReturn
     */
    public ApiReturn returnFormat(Integer code,String msg,T data){
        ApiReturn apiReturn = new ApiReturn();
        apiReturn.setCode(code);
        apiReturn.setMes(msg);
        apiReturn.setData(data);
        return apiReturn;
    }
}

这样代码可以执行,但编辑器有个提示
image.png
怎么写能消除这个提示?

阅读 3.1k
5 个回答

你的ApiReturn类是有泛型的,你new的时候没有传这个。
然后就是这种返回类一般不需要再单独@Component来实例化,直接在ApiReturn类中用静态方法写就是,调用更方便。

你都为 ApiReturn 声明了泛型却不用.

这个提示就是让你把泛型信息补全,如果你懒那就返回 ApiRetuen<?>, 但是这样就会让 swagger 之类的工具读取不到 data 的类型.

为什么要注入?写成静态方法直接调用啊

你这个应用场景,应该使用new而不是依赖注入,要不然就是注入一个创建ApiRetuen的工厂,警告信息如同楼上所说,只是因为没有指定泛型参数,改为ApiRetuen<T>即可

    public ApiReturn<T> returnFormat(Integer code,String msg,T data){
        ApiReturn<T> apiReturn = new ApiReturn();
        apiReturn.setCode(code);
        apiReturn.setMes(msg);
        apiReturn.setData(data);
        return apiReturn;
    }

楼上已经说的很清楚了,问题是因为没有写泛型,楼上给的方案也很好。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题