嗯哼哼哼, 2022-07-13 11:07 采纳率: 72%
浏览 68
已结题

JAVA中关于lambda表达式的一些问题

@Test
public void iterTest() {
List languages = Arrays.asList("java","scala","python");
//before java8
for(String each:languages) {
System.out.println(each);
}
//after java8
languages.forEach(x -> System.out.println(x));
languages.forEach(System.out::println);
}
请问,这里的System.out.println为什么可以使用lambda表达式,lambda表达式不是必须用在函数式接口上吗?另外,数组构造器怎么构造泛型数组。

  • 写回答

3条回答 默认 最新

  • 皮蛋不吃粥 2022-07-13 11:32
    关注

    System.out::println
    相当于是forEach(Consumer<? super E> action) 里Consumer函数接口的实现,消费函数接口,接受一个实参,无返回值。

    评论
  • Tomshidi 2022-07-13 16:33
    关注

    函数式接口,并不是单单指加了注解@FunctionalInterface的接口。
    只要某个interface的定义中,只有一个可被实现的方法,那么这个接口定义的变量就可以作为lambda表达式的接收方。

    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月2日
  • 已采纳回答 8月25日
  • 创建了问题 7月13日

悬赏问题

  • ¥15 复杂表达式求值程序里的函数优先级问题
  • ¥15 求密码学的客成社记ji着用
  • ¥35 POI导入树状结构excle
  • ¥15 初学者c语言题目解答
  • ¥15 div editable中的光标问题
  • ¥15 mysql报错1415Not allowed to return a result set from a trigger 不知如何修改
  • ¥60 Python输出Excel数据整理,算法较为复杂
  • ¥15 回答几个问题 关于数据库
  • ¥15 51单片机串口通信问题,未完成且要修改
  • ¥15 百鸡问题 c++编程问题(相关搜索:输出数据)