如何修复接收对象数组的静态泛型方法

时间:2019-03-26 09:50:15

标签: java generics static hashmap

我写的静态函数有一个问题,该函数接收包含键和值的通用Object数组。当找到具有相同值的键时,它会添加该键的值;但是,我在使函数静态化方面遇到问题。代码如下:

public static<K,V extends Number> void mapSumOfValues(/*Map<K,V> h,*/ DataObject<K, V> []dataarray) {
    Map<K,V> h = new HashMap<>();
    Integer sum = 0;
    for(DataObject<K,V> d: dataarray) {
        h.merge(d.getKey(), d.getValue().intValue(), Integer:: sum);
    }

我得到了错误:

  

方法中的merge(K,V,BiFunction)   Map类型不适用于以下参数(K,int,   整数:: sum)

1 个答案:

答案 0 :(得分:0)

您的合并功能仅适用于Integer,因此您需要Map<K, Integer>

Map<K, Integer> h = new HashMap<>();
for (DataObject<K, V> d : dataarray) {
    h.merge(d.getKey(), d.getValue().intValue(), Integer::sum);
}