我有各種各樣的項目擴展baseItem。 爲每個類型我有一個特殊的處理程序類。正確使用泛型與地圖
我使用處理程序的地圖,使用項目className。 所以我的處理方法是這樣的:
private boolean handle(BaseItem item) {
BaseItemHandler bih = mapOfHandlers.get(item.getClass().getSimpleName());
return bih.handleItem(item);
}
和地圖類型爲:
map<string,BaseItemHandler> mapOfHandlers;
但我(顯然)得到一個「未通話」的警告。 是什麼做
編輯的正確方式:
的項目是
public interface BaseItem{}
和BaseItemHandler是:
public interface BaseItemHandler<T extends BaseItem> {
public boolean handleItem(T item);
}
我敢打賭,答案是「你不能做到這一點typesafely」因爲它幾乎總是。 – millimoose 2013-05-13 21:51:34
您可以使用_HandlerFactory_或向每個返回相應的_Handler_(而不是使用Map)的BaseItem添加一個方法嗎? – jahroy 2013-05-13 21:52:22
請賜教,我在哪裏得到這個警告?我複製了代碼並添加了編譯所需的幾個類,但無法找到您發佈的警告。 – 2013-05-13 21:58:53