java - Java 8 中特殊 lambda 表达式的最短表示法

标签 java lambda java-8

我是 Java 8 的新手,有点乱。

现在我尝试了函数式接口(interface)的andThen 方法Consumer在 Java 8 中:

public static void main(String[] args) {
    List<Integer> ints = new ArrayList<Integer>();
    for (int i = 0; i < 5; i++) {
        ints.add(i);
    }
    Consumer<Integer> cons1 = in -> System.out.println("--> " + in);
    ints.forEach(cons1.andThen(in -> System.out.println("-+---> " + in)));
}

效果很好!输出是:

--> 0
-+---> 0
--> 1
-+---> 1
--> 2
-+---> 2
--> 3
-+---> 3
--> 4
-+---> 4

现在,我问自己是否可以在不为第一个消费者 cons1 创建自己的对象的情况下连接两个消费者(使用 andThen 方法)?

最佳答案

是的,但它会比直接的方法更困惑。

可以

ints.forEach(
   ((Consumer<Integer>) in -> System.out.println("--> " + in))
       .andThen(in -> System.out.println("-+---> " + in)));

但还是直接写会好很多

ints.forEach(in -> {
  System.out.println("--> " + in);
  System.out.println("-+---> " + in);
});

关于java - Java 8 中特殊 lambda 表达式的最短表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35139376/

相关文章:

java - 如何在 java 8 函数式 API 中将 Map<String, List<String>> 转换为 Map<String, String>

java - 从 map 中获取最高 n 个数字的最简洁方法?

java - Google 登录突然无法使用

java - 无法在 Neo4j JAVA 中执行密码匹配查询

maven - 错误 : lambda expressions are not supported in -source 1. 5 使用 java 8 运行

java流按属性对列表进行排序/过滤

c++ - Lambda VS 函数

java - 降低 HashMap 优化逻辑的复杂性 值被替换为包含段落字符串数组的键?

java - 什么是<? super T> 语法?

java - 如何使用 lambda 在 Java 中实现两个抽象方法?