我有2個HashMaps與<Integer, "sometype">
。所以「某種類型」可能會有所不同,因此我試圖使其具有通用性。在這種情況下,我的兩個varaibles如下Java泛型:調用通用方法「...不適用於參數...」
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>
this.values_map = MapOperations.<UI_FieldPV>rearrengeHashMapIdx(this.input_map);
一個HashMap,給了我出現以下錯誤:
The parameterized method
<UI_FieldPV>rearrengeHashMapIdx(HashMap<Integer,UI_FieldPV>)
of typeUI.MapOperations
is not applicable for the arguments(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;
}
}
那麼我在做什麼錯? 感謝您的幫助!
的泛型方法的類型參數是沒有必要的,它的從通過的論據中推斷出來。 –