[英]Java Inheritance and generics, how to declare a function that applies to “multiple types” of inheritance?
我找不到一個好的問題/標題我想做什么。 我對泛型不是很熟悉,所以我有一些問題需要了解它們是如何工作的。
假設我有一個Map<k,v>
類,它將鍵映射到值。
class Map<K,V>{
public V get(K key){
//...
}
public void set(K key, V v){
//...
}
}
然后,我創建了兩個子類:
class SuperMap<K,V> extends Map<K,V>{ /* ... */ }
class HyperMap<K,V> extends Map<K,V>{ /* ... */ }
我想要的是創建一個函數,可以采取任何映射並打印每個鍵和值的字符串表示形式。 所以我可以:
SuperMap<Unicorn, Horse> unicornsMap = ....;
HyperMap<Pegasus, Horse> pegasusMap = ....;
printMap(unicornsMap);
printMap(pegasusMap);
那么, printMap
函數簽名應該是什么?
我試過: void printMap(Map<Object, Horse>)
但它不起作用:
printMap(Map<Object,Horse>)
類型中的方法printMap(Map<Object,Horse>)
不適用於參數(HyperMap<Pegasus,Horse>
)
printMap(Map<Object,String>)
類型中的方法printMap(Map<Object,String>)
不適用於參數(SuperMap<Unicorn,Horse>
)
printMap(Map<?, Horse>)
或者,或者
<K> printMap(Map<K, Horse>)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.