下面的代码片段无法编译;我有一个带有Map的泛型类,它从通用键K映射到Floats。我的大多数方法都以真正通用的方式处理这个地图。
此外,我想允许使用升序整数值初始化地图。显然,这要求我将方法约束为K = Integer。不幸的是,我收到以下错误:
在Map类型中放置(K,Float)的方法不适用于参数(K扩展为Integer,Float)
非常感谢任何帮助!
public class MyClass<K> {
Map<K,Float> myMap;
<K extends Integer> MyClass(int size){
distribution = new HashMap<K,Float>();
Integer bar = 0;
while(bar<size){
Float rnd = ThreadLocalRandom.current().nextFloat();
myMap.put(bar,rnd);
bar++;
}
}
}
答案 0 :(得分:4)
您可以扩展您的类并为基类指定参数类型:
class MyClass<K> {
Map<K,Float> myMap;
}
class Derived extends MyClass<Integer>{
void SparsePDT(int size){
myMap = new HashMap<Integer,Float>();
Integer bar = 0;
while(bar<size){
Float rnd = ThreadLocalRandom.current().nextFloat();
myMap.put(bar,rnd);
bar++;
}
}
}
它使课程&#34; MyClass&#34;可以保持完全通用,也可以使用整数类型的地图 有关扩展通用类的更多信息,请阅读here 希望它有所帮助。
答案 1 :(得分:1)
另一种作为子类的方法是使用静态创建方法:
date