java - 为什么我收到类型不匹配错误?
问题描述
我一直在尝试使用泛型返回地图:
import java.util.HashMap;
import java.util.Map;
public class GenericTest {
public <T extends Vehicle> Map<String, T> get() {
Map<String, Car> map = new HashMap<>();
return map; // Getting error
}
}
class Vehicle {
}
class Car extends Vehicle {
}
在我返回地图的行中,我收到错误
Type mismatch: cannot convert from Map<String,Car> to Map<String,T>
有人可以解释为什么吗?
在返回类型中,我提到了 T 扩展了 Vehicle。
解决方案
因为你可以打电话Map<String, Truck> map = new GenericTest().get();
。而且 aMap<String, Car>
不是 a Map<String, Truck>
。
将变量声明更改为:
Map<String, T> map = new HashMap<>();
或将方法签名更改为:
public Map<String, Car> get()
推荐阅读
- javascript - 为什么它在 textarea 中出现两次空值?
- python - 如何将 .txt 文件中的列表转换为 Processing (python) 中的列表?
- python - 如何从列表中删除/忘记/销毁使用 for 循环生成的一组单选按钮?
- linux - 将来自 linux“ls”命令的文件名存储到单独的数组/列表元素中
- r - Rstudio 无法正确处理带有中文字符的评论
- swift - Swift 地图图钉标注和参数
- javascript - 从数组中的数组中删除重复项
- asp.net-core - 我无法在 .NET CORE Razor 页面的 aspsettings.json 中为 SQLite 配置有效的 ODBC 连接字符串
- python - 在 windows10 中安装 OpenSlide-python
- java - 为什么我的老师告诉我,当我的代码完美运行时,我的返回语句是错误的