📅  最后修改于: 2023-12-03 15:31:35.531000             🧑  作者: Mango
在Java 8中,方法引用为我们提供了一种简单而强大的方式来引用已存在的方法。它也被称为 Lambda 表达式的语法糖。方法引用可以让我们避免编写重复的 Lambda 表达式并提高代码可读性。
在Java 8中,方法引用被分为四种类型:
静态方法引用使用方法的名称来引用该方法。它的语法是:
ClassName::staticMethodName
例如,下面的代码使用静态方法引用将 Integer
类的 parseInt
方法转换成一个函数式接口:
Function<String, Integer> parser = Integer::parseInt;
实例方法引用是指方法的调用者作为方法引用的目标。它的语法是:
object::methodName
例如,下面的代码使用实例方法引用将 System.out
的 println
方法转换成一个函数式接口:
Consumer<String> printer = System.out::println;
构造函数引用使用类的名称来引用该类的构造函数。它的语法是:
ClassName::new
例如,下面的代码使用构造函数引用创建一个 ArrayList
的实例:
Supplier<List<String>> listSupplier = ArrayList::new;
数组引用使用类型和长度来引用该类型的数组。它的语法是:
TypeName[]::new
例如,下面的代码使用数组引用创建一个 String
类型的数组:
Function<Integer, String[]> arrayCreator = String[]::new;
方法引用适用于以下场景:
方法引用的使用可以使代码更加简洁和可读。例如,下面的代码使用实例方法引用来遍历集合并打印其中的元素:
List<String> list = Arrays.asList("apple", "banana", "cherry");
list.forEach(System.out::println);
另一个例子是,使用实例方法引用将字符串转换为大写:
Function<String, String> upperCase = String::toUpperCase;
String result = upperCase.apply("hello");
Java 8 中的方法引用是一种简单而强大的特性,使用它可以避免编写冗长的 Lambda 表达式。静态方法引用、实例方法引用、构造函数引用和数组引用是方法引用的四种类型。方法引用适用于参数类型和返回类型可以匹配的情况,并且可以通过类型推断或标准类型转换自动匹配。方法引用可以提高代码的可读性并使代码更加简洁。