如何在Java 8中为变量分配lambda? [英] How do you assign a lambda to a variable in Java 8?

查看:331
本文介绍了如何在Java 8中为变量分配lambda?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

只是在Java 8中使用新的lambda和功能,我不知道如何做到这一点。

Just playing with the new lambda and functional features in Java 8 and I'm not sure how to do this.

例如以下内容有效:

    Map<String, Integer> map = new HashMap<>();
    map.put("A", 1);
    map.put("B", 2);
    map.put("C", 3);
    map.compute("A", (k, v) -> v == null ? 42 : v + 41));

但以下给出了语法错误:

but the following gives me syntax errors:

    BiFunction x = (k, v) -> v == null ? 42 : v + 41;
    map.compute("A", x);

任何想法?

推荐答案

您忘记了 BiFunction 上的泛型:

public static void main(final String[] args) throws Exception {
    final Map<String, Integer> map = new HashMap<>();
    map.put("A", 1);
    map.put("B", 2);
    map.put("C", 3);
    final BiFunction<String, Integer, Integer> remapper = (k, v) -> v == null ? 42 : v + 41;
    map.compute("A", remapper);
}

正在运行:

PS C:\Users\Boris> java -version
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b120)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b62, mixed mode)

这篇关于如何在Java 8中为变量分配lambda?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆