我一直试图使用泛型返回一个地图:
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 {
}
Run Code Online (Sandbox Code Playgroud)
在线,我返回地图,我收到错误
Type mismatch: cannot convert from Map<String,Car> to Map<String,T>
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么吗?
在返回类型中我提到过T扩展了Vehicle.
因为你可以打电话Map<String, Truck> map = new GenericTest().get();.而a Map<String, Car>不是Map<String, Truck>.
将变量声明更改为:
Map<String, T> map = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)
或将方法签名更改为:
public Map<String, Car> get()
Run Code Online (Sandbox Code Playgroud)