学习过JDK 8的都知道,在JDK 8中两个重要的特性就是Lambda Expression和Stream API.
Lambda Expression可以使用在任何需要函数式接口的地方。(只包含一个抽象方法的接口,在JDK 8中,接口可以有默认实现)
而为了进一步简化Lambda Expression的使用。 JDK 8还设计了一层语法糖,我们称之为Method Reference.
它使用两个冒号表示::
下面我来介绍这四个场景。
第一种,
当你的Lambda Expression的实现调用了某个类的静态方法。
第二种,
当你的Lambda Expression的实现调用了某个类的实例方法。
需要注意的是,这里的rest代表的是可变参数,所以你可以有0至多个参数。
第三种,
当你的Lamdba Expression的实现调用了某一已经存在的对象的实例方法。这里最通常的例子是System.out.println.
例如,
如果有以下的Lambda Expression:
(input)->System.out.println(input)
可以变成:
System.out::println
第四种情况,可以看做是第一种的变种。那就是当Lambda Expression的实现是一个构造函数的时候。把构造函数理解为这个类的静态方法(方法名是new)
所以如果有以下的Lambda Expression:
(name)->new Person(name)
可以变成:
Person::new
时间: 2024-11-10 14:36:50