lambda

格式

()->{

}
  • 即使lambda表达式没有参数依然要提供空括号
  • 如果可以推导出一个lambda表达式的参数类型,则可以忽略其类型
  • lambda表达式可以捕获外界的变量,但是该变量无法修改,因为lambda表达式可能会产生线程不安全
  • lambda表达式的域和其嵌套块一样,所以注意不能有同名的局部变量
  • lambda和普通函数一样,都必须在各个分支都有return
  • 函数式接口:只有一个抽象方法的接口。需要这种接口的时候,就可以提供一个lambda表达式,lambda表达式可以转换为接口

方法引用

    var Timer=new Timer(1000,System.out::println)
  • 让编译器生成一个函数式接口的实例,覆盖这个接口的抽象方法来调用给定的方法
  • 可以在方法引用中使用this,super参数

构造器引用

Person []people=stream.toArray(Person[]::new);
  • java无法构造泛型类型T的数组
posted @ 2023-03-29 13:23  5hithin  阅读(31)  评论(0)    收藏  举报