【发布时间】:2013-10-23 17:19:20
【问题描述】:
我有 2 个带有 <Integer, "sometype"> 的 HashMap。所以“某种类型”可能会有所不同,因此我试图使其通用。在这种情况下,我的两个变量如下
private HashMap<Integer, UI_FieldPV> values_map = new HashMap<Integer, UI_FieldPV>();
private HashMap<Integer, JComponent> input_map = new HashMap<Integer, JComponent>();
方法的第一次调用就可以了:
this.input_map = MapOperations.<JComponent> rearrengeHashMapIdx(this.input_map);
第二次调用传递一个带有<Integer, CustomClass>的HashMap
this.values_map = MapOperations.<UI_FieldPV>rearrengeHashMapIdx(this.input_map);
这给了我以下错误:
UI.MapOperations类型的参数化方法<UI_FieldPV>rearrengeHashMapIdx(HashMap<Integer,UI_FieldPV>)不适用于参数(HashMap<Integer,JComponent>)
包含泛型方法的类的编码(顺便说一句:我试图在调用类中创建一个泛型方法,但它没有工作。我是否必须创建一个嵌入式类才能使泛型方法参数工作?)
private static class MapOperations<T> {
public static <T> HashMap<Integer, T> rearrengeHashMapIdx(HashMap<Integer, T> source) {
HashMap<Integer, T> temp = new HashMap<Integer, T>();
for (Integer i = 0; i < 81; i++) {
Integer rowNum = (i / 3) % 3;
Integer block = i / 9;
Integer delta = (rowNum - block);
Integer newIdx = i + (delta * 6);
temp.put(i, source.get(newIdx));
}
return temp;
}
}
那我做错了什么? 提前感谢您的帮助!
【问题讨论】:
-
泛型方法的类型参数不是必需的,它是从传递的参数中推断出来的。
标签: java class generics methods