我有返回值的兩個輸入地圖之間單面相交的函數:通用鍵控:從地圖<T,K>地圖<K,V>和地圖<T,V>
Map<Key, Value> mergeMaps(Map aKeys<CompositeKey, Key>,
Map <CompositeKey, Value> aValues) {
Map<Key, Value> myResult = Maps.newHashMap();
for (CompositeKey myKey : aKeys.keySet()) {
if (aValues.containsKey(myKey)) {
myResult.put(aKeys.get(myKey), aValues.get(myKey));
}
}
return myResult;
}
這不的傳遞映射組合物即
T->K, K->V ===> T->V
而是轉化
T->(K,V) ===> K->V
有沒有在Java中使這個函數通用的方式,使其簽名如下?
Map<K, V> mergeMaps(Map aKeys<T, K>, Map <T, V> aValues)
尚未編譯,但IntelliJ停止抱怨:) – pbh101 2009-09-01 22:53:45
嗯,我幾乎只讀過關於Java泛型的投訴。這種語法不規則性也給我一個理由。我試圖: Mpa mergeMaps (地圖<...>,地圖<...>) 非常感謝! –
pbh101
2009-09-01 22:56:11
嗯,您必須在開始階段或定義階級中定義泛型參數。我同意在Java中泛型的實現也不完美,但有時它非常整齊。 – Daff 2009-09-01 23:10:14