我想避免来自java编译器的“未经检查或不安全的操作”消息,但我不知道如何做,当我有一个泛型方法,并希望从一般的Map返回值。 Map的值应该与泛型方法的泛型类型相同,但我无法弄清楚如何实现。
我创建了一个bitbucket项目来显示问题: https://bitbucket.org/ren-hoek/avoidsuppresswarning/overview
您可以查看以下代码段作为快速概述,但最好克隆项目并在那里进行检查。
public class VehicleServiceImplementation implements VehicleService {
private static Map<Long, VehicleResult> resultMap = new HashMap<Long, VehicleResult>();
static {
resultMap.put(5L, new VehicleResult<Car>(new Car(5L)));
}
public <CAR extends Car> VehicleResult<CAR> retrieve(final CarRequest request) {
return resultMap.get(request.getId());
}}
请注意,我无法访问界面本身,所以我无法更改它的签名
请注意,它不是关于如何处理Object返回方法,而是关于如何处理泛型方法。