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

Posted tinfinite

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习java核心技术卷之lambda随笔相关的知识,希望对你有一定的参考价值。

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

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

以上是关于学习java核心技术卷之lambda随笔的主要内容,如果未能解决你的问题,请参考以下文章

《Java核心技术 卷一》随笔

Java初学随笔

Java核心技术卷阅读随笔--第7章异常断言和日志

关于JAVA核心技术(卷一)读后的思考(lambda表达式的讨论)

读书_重读java核心技术

Java核心技术-接口lambda表达式与内部类