Java8 方法引用
2021-03-29 15:27
方法引用可以被看作仅仅调用特定方法的Lambda的一种快捷写法。如果一个Lambda代表的只是“直接调用这个方法”,那最好还是用名称来调用它,而不是去描述如何调用它。 当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用。 类 :: 静态方法 类 :: 非静态方法:你在引用一个对象的方法,譬如String::length,而这个对象是Lambda表达式的一个参数。举个例子,Lambda表达式(String s) -> s.toUppeCase()可以重写成String::toUpperCase 对象 :: 非静态方法 对于一个现有构造函数,你可以利用它的名称和关键字new来创建它的一个引用:ClassName::new。它的功能与指向静态方法的引用类似。 Supplier中的T get() Supplier System.out.println("*******************"); Supplier Function中的R apply(T t) System.out.println("*******************"); Function BiFunction中的R apply(T t,U u) System.out.println("*******************"); BiFunction 数组引用 System.out.println("*******************"); Function
方法引用
构建方式
Comparator
System.out.println(com2.compare(12,3));Comparator
System.out.println(com1.compare("abc","abd"));
System.out.println("*******************");
Comparator
System.out.println(com2.compare("abd","abm"));PrintStream ps = System.out;
Consumer
构造函数引用
Supplier
System.out.println("*******************");
System.out.println(sup1.get());
System.out.println(sup2.get());Function
Employee employee = func1.apply(1001);
System.out.println(employee);
Employee employee1 = func2.apply(1002);
System.out.println(employee1);BiFunction
System.out.println(func1.apply(1001,"Tom"));
System.out.println(func2.apply(1002,"Tom"));Function
String[] arr1 = func1.apply(5);
System.out.println(Arrays.toString(arr1));
String[] arr2 = func2.apply(10);
System.out.println(Arrays.toString(arr2));