對不起,另一個「Java通用方法不適用」的問題。我想知道我是什麼在我的理解缺失:通用方法不適用於參數
List<E>
是Collection<E>
亞型 - >意義,List<String>
是Collection<String>
假設A的亞型延伸B,
List<A>
是不是List<B>
的一個子類型
- >但在這種情況下,只有一個類型T
(或String
),所以我沒有看到Substitution Princ我可以解釋我的問題嗎?
問題代碼:
private <T, K> void genericAddToMapOfLists(HashMap<K, Collection<T>> mapOfLists,
K key, T value) {
if (mapOfLists.containsKey(key)) {
mapOfLists.get(key).add(value);
} else {
List<T> newList = new ArrayList<T>();
newList.add(value);
mapOfLists.put(key, newList);
}
}
private void parseToFruitList(HashMap<String, List<String>> fruit_colors,
String fruitName) {
String color = "";
genericAddToMapOfLists(fruit_colors, fruitName, color);
}
錯誤:
The method genericAddToMapOfLists(HashMap<K,Collection<T>>, K, T) in the type MyGroceryStore is not applicable for the arguments (HashMap<String,List<String>>, String, String)
當我改變了方法簽名genericAddToMapOfLists(HashMap<K,List<T>>, K, T)
代碼工作。
沒有必要在標題中添加主標籤。 –