Lambda表达式和Java中的方法引用之间的区别?
Lambda表达式是一种匿名方法(无名称的方法),用于提供由 功能接口定义的方法的内联 实现 ,而 方法引用类似于引用 Lambda表达式的方法,该Lambda表达式引用了未执行的方法。箭头(->)运算符可用于在lambda表达式中连接参数和功能,而(::)运算符可将方法名称与方法引用中对象或类的名称分隔开。
Lambda表达式的语法
([comma seperated argument-list]) -> {body}方法引用的语法
<classname> :: <methodname>
示例
import java.util.*;
public class LambdaMethodReferenceTest {
public static void main(String args[]) {
List<String> myList = Arrays.asList("INDIA", "AUSTRALIA", "ENGLAND", "NEWZEALAND", "SCOTLAND");
System.out.println("------- Lambda Expression --------");
//使用Lambda函数调用system.out.println()
myList.stream().map(s -> s.toUpperCase())
.forEach(s -> System.out.println(s));
System.out.println("------- Method Reference ---------");
//使用方法引用来调用system.out.println()
myList.stream().map(String :: toUpperCase).sorted()
.forEach(System.out :: println);
}
}输出结果
------- Lambda Expression -------- INDIA AUSTRALIA ENGLAND NEWZEALAND SCOTLAND ------- Method Reference -------- AUSTRALIA ENGLAND INDIA NEWZEALAND SCOTLAND