06.方法引用
方法引用
- 把已经有的方法拿过来用, 当做函数式接口中抽象方法的方法体
- 条件
- 引用处必须是函数式接口
- 被引用的方法必须已经存在
- 被引用方法的形参和返回值需要跟抽象方法保持一致
- 被引用方法的功能要满足当前需求
- 方法引用符:
::
分类
-
引用静态方法
- 格式: 类名 : : 静态方法
- 范例:
Integer::parseInt
-
引用成员方法
- 格式: 对象 : : 成员方法
- 其他类: 其他类对象 : : 方法名
- 本类: this : : 方法名
- 父类: super : : 方法名
- 格式: 对象 : : 成员方法
-
引用构造方法
- 格式: 类名 : : new
- 范例:
Student::new
-
其他调用方式
- 使用类名引用成员方法
- 格式: 类名 : : 成员方法
- 范例:
String::subString
- 第三条条件变为: 被引用方法的形参, 需要跟抽象方法的第二个形参到最后一个形参保持一致, 返回值保持一致
- 第一个参数: 表示被引用方法的调用者, 决定了可以引用哪些类中的方法. 在Stream流中, 第一个参数一般都表示流里面的每一个数据. 假设流里面的数据是字符串, 那么使用这种方式进行方法引用, 只能引用String这个类中的方法
- 第二个参数到最后一个参数: 跟被引用方法的形参保持一致, 如果没有第二个参数, 说明被引用的方法需要是无参的成员方法
- 引用数组的构造方法
- 格式: 数据类型[] : : new
- 范例:
int[]::new
- 细节: 数组的类型, 需要跟流中数据的类型保持一致
- 使用类名引用成员方法