一、概念
方法引用是 Java 8 中的一个新特性,它允许你直接引用已存在的方法或构造函数,而不需要通过 Lambda表达式
来创建匿名函数。方法引用可以被看作是 Lambda表达式
的一种更简洁的形式,使得代码更加清晰和易读。
注:在我们实际开发中,不需要考虑那么多,我们只需要在写完 Lambda表达式
时发现代码只有一行且 IDEA
编辑器提示可以将 Lambda表达式
转换成 方法引用
即可,当然转换后是什么意思你得知道~
二、书写格式
方法引用的语法是使用 双冒号::
来表示,根据引用的方法或构造函数的类型,可以分为不同的形式。
三、静态方法引用
- 静态方法引用:使用
类名::静态方法名
的形式,例如Integer::parseInt
就是调用Integer
类的parseInt
静态方法。
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
// 创建集合
ArrayList<String> list = new ArrayList<>();
// 添加元素
list.add("13");
list.add("21");
list.add("32");
// 创建Stream流
list.stream()
// 调用Integer类中的parseInt方法,将集合内的元素转换成Integer类型
.map(Integer::parseInt)
// 打印集合
.forEach(System.out::println);
}
}
运行结果:
13
21
32
四、成员方法引用
- 实例方法引用:使用
对象引用::成员方法名
的形式,例如String::toUpperCase
就是调用String
类的toUpperCase
成员方法。
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
// 创建集合
ArrayList<String> list = new ArrayList<>();
// 添加元素
list.add("apple");
list.add("banana");
list.add("orange");
// 创建Stream流
list.stream()
// 调用String类的成员方法,将集合中的元素全部转换成大写
.map(String::toUpperCase)
.forEach(System.out::println);
}
}
运行结果:
APPLE
BANANA
ORANGE
五、构造方法引用(了解)
- 构造函数引用:使用
类名::new
的形式,例如Student::new
表示引用Student
类的构造函数。
六、数组引用(了解)
- 数组引用:使用
数组类型名::new
的形式,例如String[]::new
表示创建String
类型的数组。