java - 类型完全匹配,但 Java 编译器不会为 List 编译?
问题描述
private ResourceAssembler<? extends BasedEntity> resourceAssembler;
List<? extends BasedEntity> bases = userRepository.findAll();
return resourceAssembler.toResources(bases, User.class); //<-----compile error
编译错误
Wrong 1st argument type. Found: 'java.util.List<? extends BasedEntity>', required: 'java.util.List<? extends BasedEntity>'
方法签名
public class ResourceAssembler<T extends BasedEntity> {
public Resources<Resource<T>> toResources(List<T> list, Class entityClass) {}
}
这是怎么回事?
可以复制并粘贴到空项目中的最小代码示例。
class Main {
ResourceAssembler<? extends BasedEntity> resourceAssembler;
List<? extends BasedEntity> bases;
void test() {
resourceAssembler.toResources(bases);
// the error is here: ^~~~~
}
}
class BasedEntity {}
class ResourceAssembler<T extends BasedEntity> {
void toResources(List<T> list) {}
}
解决方案
推荐阅读
- sql - 如何选择总和和多列
- arrays - 如何在 React Native 中使用 AsyncStorage 存储对象数组
- r - 根据所有列中特定行的平均值创建新行
- pycharm - PyCharm:自动滚动到结束(运行测试)
- azure-devops - 如何让整个组织都可以使用项目?
- android - 如何仅在一个片段中显示来自工具栏的 SearchView?
- mysql - mysql和mysqlsh/mysqlshell之间查询执行/加载的区别
- python - Discord.py 获取所有公会机器人的名称在 1 个嵌入/消息中
- c - 有时使用 localtime() 函数会出现错误的时间
- android - Flutter 为 Android 和 IOS 设计不同的设计