java - 这个通用代码有什么问题(如果没有强制转换(T)就返回失败)
问题描述
当我使用 maven 构建此代码时,它向我显示错误“PRequest 无法转换为 T”。
如果我将父构建的“getRequest(Object params)”方法的返回值转换成功。
如果我写的是公共抽象 PRequest getRequest(Map params); 构建成功。
public abstract class Parent<T extends CommonRequest> {
public abstract T getRequest(Map<String, Object> params);
public T getRequest(Object params) {
// ERROR PRequest cannot be converted to T
return params instanceof Map ?
getRequest((Map)params) :
getRequest(JacksonUtil.getMapper().convertValue(params, Map.class));
}
...
}
public class Child extends Parent<PRequest> {
@Override
public PRequest getRequest(Map<String, Object> params) {
return new PRequest();
}
...
}
public class PRequest extends CommonRequest {
...
}
我想知道为什么当我将返回类型写为 T 而没有像“(T)getRequest((Map)params)”这样的转换时会发生错误
解决方案
推荐阅读
- python - 将 tf.Dataset 拆分为测试和验证子集的规范方法是什么?
- php - 爆炸,推动一个元素并在一个动作中内爆
- django - 有没有办法改变 django 中的添加表列?
- c++ - 以缺少 const 作为参数的纯虚函数的重新定义
- android - 如何在 Android Enterprise Work Profile 中调试应用程序
- visual-studio - 通过命令提示符为 Visual Studio 部署项目创建构建
- mysql - 为什么同一查询会得到不同的输出?
- java - 安全地从 Spring 后面反应前面。安全不允许查看主页
- angular - Angular 8如何根据所选材料选项卡更改材料日期选择器的提供者?
- angular - Excel导出将日期时间视为数字