Jua*_*hin 3 java generics inheritance
我找不到一个好的问题/标题我想做什么.我对泛型不是很熟悉,所以我有一些问题需要了解它们是如何工作的.
假设我有一个Map<k,v>
将键映射到值的类.
class Map<K,V>{
public V get(K key){
//...
}
public void set(K key, V v){
//...
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我创建了两个子类:
class SuperMap<K,V> extends Map<K,V>{ /* ... */ }
class HyperMap<K,V> extends Map<K,V>{ /* ... */ }
Run Code Online (Sandbox Code Playgroud)
我想要的是创建一个函数,可以采取任何映射并打印每个键和值的字符串表示形式.所以我可以:
SuperMap<Unicorn, Horse> unicornsMap = ....;
HyperMap<Pegasus, Horse> pegasusMap = ....;
printMap(unicornsMap);
printMap(pegasusMap);
Run Code Online (Sandbox Code Playgroud)
那么,printMap
功能签名应该是什么?
我试过:void printMap(Map<Object, Horse>)
但它不起作用:
printMap(Map<Object,Horse>)
MainClass类型中的方法不适用于参数(HyperMap<Pegasus,Horse>
)
printMap(Map<Object,String>)
MainClass类型中的方法不适用于参数(SuperMap<Unicorn,Horse>
)
printMap(Map<?, Horse>)
Run Code Online (Sandbox Code Playgroud)
或者,或者
<K> printMap(Map<K, Horse>)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
137 次 |
最近记录: |