欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

学习java核心技术卷之lambda随笔

程序员文章站 2022-03-14 10:23:13
Lambda表达式 形式:参数,箭头(->),表达式 参数类型要写,如果可以推导出来则可以不写 只有一个参数可以省略小括号 无参数要写空括号() *如果分支返回值,那么所有分支都要返回值,否则不合法 函数式接口:只有一个抽象方法的接口(可以用@FunctionalInterface注解标记) 比如, ......

Lambda表达式

  形式:参数,箭头(->),表达式

    参数类型要写,如果可以推导出来则可以不写

    只有一个参数可以省略小括号

    无参数要写空括号()

    *如果分支返回值,那么所有分支都要返回值,否则不合法

   函数式接口:只有一个抽象方法的接口(可以用@FunctionalInterface注解标记)

    比如,javax.swing.Timer中可以这样

      Timer t = new Timer(1000, event ->

      {

        …

      });

    这个构造器的第二个参数需要一个ActionListener实例,ActionListener

    就是只有一个方法的接口,所以可以使用 lambda表达式。

  方法引用

    Object::instanceMethod

    Class::staticMethod

    Class::instanceMethod

    如:event -> System.out.println(event)  等价于 System.out :: println

      Math::pow  等价于 (x, y) -> Math.pow(x, y)

    而第三种情况,第一个参数会成为方法的目标如 :String::compareToIgnoreCase 等价于(x,y) -> x.compareToIgnoreCase(y)

    还有可以使用this和super参数;

    Super :: instanceMethod

  构造器引用:

    X -> new int[x] 等价于 int[]::new

    Person x = New Person(…) 等价于 Person::new

    当有多个构造器时,编译器会从上下文推导