Java 方法引用
方法引用
方法引用:把已经有的方法拿过来用,当作函数式接口中的抽象方法的方法体
被引用的方法必须已经存在
被引用的方法的形参和返回值需要和抽象方法保持一致
被引用的方法的功能要满足当前需求
被引用处需要是函数式接口
::是方法引用符
例2:将数字字符串转为纯数字
引用成员方法
格式:对象::成员方法
其他类:其他类对象::方法名
本类:this::方法名(引用处不能是静态方法)
父类:super::方法名(引用处不能是静态方法)
例:
新建一个StringOperation类写test方法
如果要引用本类中的方法
引用构造方法
格式:类名::new
范例:Student::new
使用类名引用成员方法
格式:类名::成员方法
范例:String::substring
这种方法特殊的引用规则
需要有函数式接口
被引用的方法必须已经存在
被引用的方法的形参需要根抽象方法的第二个形参到最后一个形参保持一致,返回值需要保持一致
抽象方法形参的详解:
第一个参数:表示被引用方法的调用者,决定了可以引用哪些类中的方法
在Stream流当中,第一个参数一般都表示流里面的每一个数据
假设流里面是字符串,那么使用这种方法引用,只能使用String这个类中的方法
第二个参数到最后一个参数,跟被引用方法的形参保持一致,如果没有第二个参数,说明被引用的方法需要是午餐的成员方法
局限性:
不能引用所有类中的成员方法
是跟抽象方法第一个参数有关,这个参数是什么类型的,那么就只能引用这个类中的方法
引用数组的构造方法
格式:数据类型[]::new
范例:int[]::new
细节:数组的类型,需要跟流中数据的类型保持一致
总结
引用静态方法 类名::静态方法
引用成员方法 对象::成员方法 this::成员方法(不能是静态的) super::成员方法(不能是静态的)
引用构造方法 类名::new
使用类名引用成员方法 类名::成员方法
注意:不能引用所有类中的成员方法,如果抽象方法的第一个参数使A类型的,只能引用A类中的方法
引用数组的构造方法 数据类型[]::new