1. 概述
以前的方法调用是对象.方法名或类名.方法名,jdk1.8提供了另外一种调用方式::
方法引用是一种更简洁易懂的lambda表达式,操作符是双冒号::,用来直接访问类或者实例已经存在的方法或构造函数。
通过方法的引用,可以将方法的引用赋值给另一个变量
语法:左边是容器(可以使类名,实例名),中间是::,右边是相应的方法名
静态方法,则是ClassName::methodName,例如:Object::equals
实例方法,则是Instance::methodName
构造函数,则是类名::new
2. 实例讲解
public static void main(String[] args) {
// 使用双冒号来构建静态函数的引用
Function<String, Integer> func = Integer::parseInt;
Integer value = func.apply("10");
System.out.println(value);
// 使用双冒号来构造非静态函数引入
String text = "test";
Function<Integer, String> fun = text::substring;
String resultStr = fun.apply(1);
System.out.println(resultStr);
// 构造函数,引入多个参数
BiFunction<Integer, String, User> biFun = User::new;
User user = biFun.apply(1, "name1");
System.out.println(user);
// 函数引用也是一种函数式接口,可以将函数引用作为方法的参数
sayHello(String::toUpperCase, "test");
}
private static void sayHello(Function<String, String> func, String param) {
String result = func.apply(param);
System.out.println(result);
}