如何在Java 8中向Map,BiFunction和BiConsumer添加引用参数化?

Ale*_*lex 0 java java-8

我有代码,没有Map,BiFunction和BiConsumer的引用参数化,这个代码导致Java警告.我试图添加此参数化,但这导致编译错误

Map numbers = new HashMap<>();
Map numbers2 = new HashMap();
numbers.put(1, "one");
numbers.put(2, "two");
numbers2.put(3, "three");
numbers2.put(4, "four");
BiFunction func = (k,v) -> v;
BiConsumer cons = (k,v) ->numbers.merge(k,v,func);
numbers2.forEach(cons);
Run Code Online (Sandbox Code Playgroud)

Naz*_*iuk 6

Map<Integer, String> numbers = new HashMap<>();
Map<Integer, String> numbers2 = new HashMap<>();
numbers.put(1, "one");
numbers.put(2, "two");
numbers2.put(3, "three");
numbers2.put(4, "four");
BiFunction<String, String, String> func = (v1, v2) -> v2;
BiConsumer<Integer, String> cons = (k, v) -> numbers.merge(k, v, func);
numbers2.forEach(cons);
Run Code Online (Sandbox Code Playgroud)

我想你在哪里感到困惑func.Map#merge函数接受一个函数,给定2个值(旧的和新的)产生新的合并值.