Java方法引用主要用于将现有方法作为Lambda表达式的目标或者作为方法引用的目标。方法引用不能直接用于方法调用。方法引用是一种简化Lambda表达式的写法,它允许你重用现有方法或构造函数。
方法引用有以下四种类型:
- 静态方法引用:用于引用静态方法。例如,
List::sort
是一个静态方法引用,它引用了List
类的sort
方法。 - 特定对象的实例方法引用:用于引用特定对象的实例方法。例如,
String::substring
是一个实例方法引用,它引用了String
类的substring
方法。 - 特定类型的任意对象的实例方法引用:用于引用特定类型的任意对象的实例方法。例如,
Number::intValue
是一个实例方法引用,它引用了Number
类及其子类的intValue
方法。 - 构造方法引用:用于引用类的构造方法。例如,
ArrayList::new
是一个构造方法引用,它引用了ArrayList
类的构造方法。
虽然方法引用不能直接用于方法调用,但它们可以用于以下场景:
- 作为Lambda表达式的目标:方法引用可以作为Lambda表达式的目标,从而简化代码。例如,你可以使用方法引用来替换匿名内部类。
- 作为方法参数:方法引用可以作为函数式接口的方法参数,例如在
Stream
API 中。 - 用于方法链:方法引用可以与其他方法引用或Lambda表达式结合使用,形成方法链,从而实现更简洁的代码。