首页 > 解决方案 > 为什么我收到类型不匹配错误?

问题描述

我一直在尝试使用泛型返回地图:

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。

标签: javagenerics

解决方案


因为你可以打电话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()

推荐阅读