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

标签 java generics static hashmap

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

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);
    }

我收到错误:

The method merge(K, V, BiFunction) in the type Map is not applicable for the arguments (K, int, Integer::sum)

最佳答案

您的合并功能仅适用于 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);
}

关于java - 如何修复接收对象数组的静态泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55354097/

相关文章:

java - 登录时更改语言环境

java - 为什么我的列表对象位于内存中?

java - Fragment 类型的 getSupportFragmentManager() 方法未定义

java - 用抽象类的子类的对象填充通用列表

java - main 方法不能声明为 static;静态方法只能在静态或顶级类型中声明

java - 截击请求太慢

java - 泛型类型参数给出错误,但通配符类型参数不会给出错误

java - 类型参数 FooEntity 隐藏了 FooEntity 类型

java - 为什么本地类接受静态最终变量?

c++ - 单例模式 : different behavior of auto_ptr and unique_ptr