我想获得的是可以安全地返回输入类实例的东西。在我的情况下被用作服务提供者。代码示例:类型安全服务getter类(返回参数化类型)
public class MyClass {
private Map<String, Object> mServices;
public MyClass() {
mServices = new HashMap<String, Object>();
mServices.put(XmlService.class.getName(), new XmlService());
}
public <E extends Object> E getService(Class<?> service) {
return (E) mServices.get(service.getName());
}
}
我承认我不擅长参数化类型,我需要一些帮助。我没有从地图中获取对象吗?为什么我需要投入E,放弃类型安全? 有没有办法避免铸造和/或压制警告?
哦感谢您的改进! 如果我把Map mServices? 虽然编译器给我一个put方法的错误。 –
2013-02-09 21:43:30
@Kap:即使它有效,你会期待什么? Map.get()会返回一些扩展Object的类(根据类型声明)。你不需要这个额外的''?延伸'知道这一点。 – 2013-02-09 21:45:34