Incompatible types. Found:‘com.daqin.demo251001.reponse.AjaxResult<java.lang.Object>‘, required不全还有
Incompatible types. Found: 'com.daqin.demo251001.reponse.AjaxResult<java.lang.Object>', required:'com.daqin.demo251001.reponse.AjaxResult<T>':58 Incompatible types. Found: 'com.daqin.demo251001.reponse.AjaxResult<java.lang.Object>', required:'com.daqin.demo251001.reponse.AjaxResult<T>':63这怎么办
## 问题分析
这是一个泛型类型不匹配的错误。错误信息显示返回的是 `AjaxResult<Object>` 类型,但期望的是 `AjaxResult<T>` 类型。
## 解决方案
需要在静态方法中正确使用泛型类型参数。以下是修正后的代码:
```java
package com.daqin.demo251001.reponse;
import com.daqin.demo251001.reponse.enums.ErrorEnum;
import lombok.Data;
/**
* Ajax响应结果封装类
* @param <T> 响应数据类型
*/
@Data
public class AjaxResult<T> {
// 状态码
private Integer code;
// 提示信息
private String msg;
// 响应数据
private T data;
// 无参构造
protected AjaxResult() {
}
public AjaxResult(T data) {
this.code = ErrorEnum.SUCCESS.getCode();
this.msg = ErrorEnum.SUCCESS.getMsg();
this.data = data;
}
// 全参构造
public AjaxResult(Integer code, String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
}
// 成功响应 - 无数据
public static <T> AjaxResult<T> success() {
return new AjaxResult<T>(ErrorEnum.SUCCESS.getCode(), ErrorEnum.SUCCESS.getMsg(), null);
}
// 成功响应 - 有数据
public static <T> AjaxResult<T> success(T data) {
return new AjaxResult<T>(data);
}
// 成功响应 - 自定义消息
public static <T> AjaxResult<T> success(String msg, T data) {
return new AjaxResult<T>(ErrorEnum.SUCCESS.getCode(), msg, data);
}
// 失败响应 - 使用错误枚举
public static <T> AjaxResult<T> error(ErrorEnum errorEnum) {
return new AjaxResult<T>(errorEnum.getCode(), errorEnum.getMsg(), null);
}
// 失败响应 - 自定义状态码和消息
public static <T> AjaxResult<T> error(Integer code, String msg) {
return new AjaxResult<T>(code, msg, null);
}
// 失败响应 - 自定义消息
public static <T> AjaxResult<T> error(String msg) {
return new AjaxResult<T>(ErrorEnum.ERROR.getCode(), msg, null);
}
}
```
## 主要修改点
1. **在所有静态方法的返回类型中明确指定泛型**:将 `new AjaxResult<>(...)` 改为 `new AjaxResult<T>(...)`
2. **保持泛型一致性**:确保创建的 [AjaxResult]实例与方法声明的泛型类型 `T` 保持一致
这样修改后,泛型类型匹配问题就能解决了。
更多推荐


所有评论(0)