方法引用(十五)
方法引用:把已存在的方法拿过来用,当做函数式接口中抽象方法的方法体。
注意:
- 引用处必须是函数式接口
- 被引用方法必须已经存在
- 被引用方法的形参和返回值需跟抽象方法保持一致
- 被引用方法的功能需要满足当前需求
方法引用符:
::
范例:
1 | import java.util.Arrays; |
分类
- 引用静态方法
- 引用成员方法
- 引用其他类的成员方法
- 引用本类的成员方法
- 引用父类的成员方法
- 引用构造方法
- 其他调用方式
- 使用类名引用成员方法
- 引用数组的构造方法
引用静态方法
格式:
类名::静态方法
范例:
1 | import java.util.ArrayList; |
引用成员方法
格式:对象::对象方法
- 其他类:其他类对象::方法名
- 本类:this::方法名
- 引用处不能是静态方法,静态方法中没有this
- 父类:super::方法名
- 引用处不能是静态方法,静态方法中没有super
引用其他类的成员方法
1 | //只打印集合中以“路”开头并且长度为3的字符串 |
引用本类的成员方法
1 | //Test.java |
获取父类的成员方法
1 | //Test.java |
引用构造方法
格式:
类名::new
范例:
1 | //Test.java |
类名引用成员方法
格式:类名::成员方法
该方法引用的规则:(该规则仅限于类名引用成员方法)
- 需要有函数式接口
- 被引用的方法已经存在
- 被引用方法的形参,需跟抽象方法的第二个形参到最后一个形参一致,返回值需保持一致
- 被引用的方法需要满足当前的需求
抽象方法形参的详解:
第一个参数:表示被引用方法的调用者,决定了可以引用那些类的方法,比如:在Stream流中,第一个参数一般都表示流里面的每一个数据,假设流里面的数据是字符串,那么使用这种方式进行方法引用,只能引用String类里的方法。
第二个参数到最后一个参数:跟被引用方法的形参保持一致,若无第二个参数,则该被引用的方法需要是无参的成员方法。
范例:
1 | //将集合中字符串以大写的形式输出 |
引用数组的构造方法
格式:
数据类型::new
目的:创建一个指定类型的数组。
注:数组的类型需跟流中的类型保持一致。
范例:
1 | //集合存取一些整数,收集到数组中 |
范例
例1
1 | /* |
例2
1 | /* |
例3
1 | /* |