我有一個Map
其鍵的通用類型Key<T>
,值是List<T>
類型。如果密鑰是Key<String>
的實例,則該值必須是List<String>
,並且相同的規則適用於任何其他鍵值對。我曾嘗試以下,但它並不能編譯:如何聲明具有變量泛型的地圖?
Map<T, List<T>> map;
目前我有「部分」仿製藥申報它:
Map<Object, List> map;
我知道這是不好的,但我目前還沒有更好的選擇。在這種情況下是否可以使用泛型?
UPDATE
也許是我沒有表達清楚我的問題。我希望有一個地圖,它能夠:
map.put(new Key<String>(), new ArrayList<String>());
map.put(new Key<Integer>(), new ArrayList<Integer>());
而下面的代碼不應該編譯:
map.put(new Key<String>(), new ArrayList<Integer>());
的關鍵和值應始終具有相同的泛型類型,而泛型類型可以是任意的,顯然擴展地圖不符合我的要求。
空間不應該是問題。這可能是它被使用的方式。 OP需要顯示更多的代碼來修復。 – Nishant 2012-07-16 04:33:53
您正在使用'T'類型的鑰匙還是'鑰匙'類型的鑰匙? –
2012-07-16 04:34:18
根據你的實際情況,你應該使用封裝來解決你的問題,因爲Nishant和Geoff在他們的答案中聲明,只是適應你的實際代碼。 – 2012-07-16 04:43:26