我想獲得的是可以安全地返回輸入類實例的東西。在我的情況下被用作服務提供者。代碼示例:類型安全服務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