方法引用
概念:就是把已经存在的方法拿过来当作函数式接口的方法体使用
方法引用符:双冒号 ::
例:Arrays.sort(A,StreamDemo6::funtion);
//将StreamDemo6类当中的funtion方法来作为函数时接口的方法体来使用。
方法引用的要求:
- 要引用的形参必须是函数式接口。
- 被调用的方法必须已经存在。
- 被调用方法的形参和返回值类型必须要和接口实现类抽象方法形参和返回值类型一致。
- 被引用方法的功能要能满足要求。
方法引用的分类:
-
引用静态方法
- 格式 类名::方法名
-
引用成员方法(分为三种)
- 第一种:引用其他类的成员方法
- 格式 对象::方法名
- 第二种:引用所在类的成员方法
- 格式 this::方法名
- 第三种:引用父类的成员方法
- 格式 super::方法名
- 第一种:引用其他类的成员方法
-
引用构造方法
- 格式 类名::new
-
其他调用方式(了解)
-
使用类名引用成员方法。如:String::toUpperCase 引用String类中的toUpperCase。
-
该引用与其他方法引用的规则略有不同
-
上述方法引用的要求3。不同的是,被调用方法的形参要和接口实现类抽象方法的第二个至最后一个形参类型一致,返回值类型必须是一致的。若接口实现类的抽象方法只有一个方法,则被引用的方法没有形参。
-
局限性:1.不能调用所有类的成员方法 2.调用哪个类的成员方法,跟抽象方法的第一个形参有关,第一个形参为什么类型就只能调用该类的成员方法。
-
.map(String::toUpperCase) //map实现类apply方法只有一个形参,所以可以引用没有形参的toUpperCase方法
-
-
-
引用数组的构造方法
- 格式:数据类型[]::new
-