方法引用
在 Java 中,方法引用(Method Reference) 是 Java 8 引入的一种简洁的语法形式,用于通过方法的名字来引用方法。它是 Lambda 表达式 的一种简化写法,特别适用于需要传递方法作为参数的场景。
✅ 方法引用的分类
方法引用主要有以下四种形式:
类型 | 语法 | 示例 | 说明 |
---|---|---|---|
静态方法引用 | ClassName::staticMethod |
Math::abs |
引用类中的静态方法 |
实例方法引用(特定对象) | instance::method |
System.out::println |
引用对象的实例方法 |
实例方法引用(任意对象) | ClassName::method |
String::toUpperCase |
引用某个类的任意对象的实例方法 |
构造器引用 | ClassName::new |
ArrayList::new |
引用类的构造方法 |
✅ 1. 静态方法引用
静态方法引用用于引用类的静态方法。
示例:
1 |
|
- 解释:
Math::abs
是静态方法引用,等价于x -> Math.abs(x)
。
✅ 2. 实例方法引用(特定对象)
实例方法引用用于引用特定对象的实例方法。
示例:
1 |
|
- 解释:
System.out::println
是方法引用,等价于x -> System.out.println(x)
。
✅ 3. 实例方法引用(任意对象)
当实例方法的调用目标是流中的每一个对象时,可以使用类名加方法名的形式引用实例方法。
示例:
1 |
|
- 解释:
String::toUpperCase
是方法引用,等价于s -> s.toUpperCase()
。
✅ 4. 构造器引用
构造器引用用于创建对象。它通过 ClassName::new
的形式引用类的构造方法。
示例:
1 |
|
- 解释:
ArrayList::new
是构造器引用,等价于() -> new ArrayList<>()
。
✅ 总结
方法引用类型 | 语法形式 | 等价Lambda表达式 | 示例 |
---|---|---|---|
静态方法引用 | ClassName::staticMethod |
(x) -> ClassName.staticMethod(x) |
Math::abs |
实例方法引用(特定对象) | instance::method |
(x) -> instance.method(x) |
System.out::println |
实例方法引用(任意对象) | ClassName::method |
(x) -> x.method() |
String::toUpperCase |
构造器引用 | ClassName::new |
() -> new ClassName() |
ArrayList::new |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Firefly!