41、方法引用
1、概述
对lambda表达式的简化
双冒号::
为引用运算符,而它所在的表达式称为方法引用,如果lambda表达式要表达的函数式接口已经存在,要使用的方法也已经存在,这可以用过方法引用来优化lambda的书写
2、通过对象名引用成员方法
前提
- 对象名已经存在,成员方法也已经存在
示例
MethodRerObject obj = new MethodRerObject();
printString(obj::printUpperCaseString);
//创建了一个对象,然后通过方法引用调用其中的方法
3、通过类名引用静态成员方法
前提
类已经存在,静态成员已经存在
int num2 = Method(-10, Math::abs);
//第二个参数为方法引用
4、使用super引用父类
因为有继承,所以可以直接使用super调用父类成员方法
method(()->{
super.sayHello();
});
5、引用构造器
public class Demo4 {
public static void printName(String name,PersonBuilder pb){
Person person = pb.BuilderPerson(name);
System.out.println(person.getName());
}
public static void main(String[] args) {
printName("迪丽热巴",(String name)->{
return new Person(name);
});
/*
方法引用
*/
printName("古力娜扎",Person::new);
}
}
6、数组的构造器引用
public class Demo5 {
public static int[] createArray(int length,ArrayBuilder ab){
return ab.builderArray(length);
}
public static void main(String[] args) {
int[] arr1 = createArray(10, (len) -> {
return new int[len];
});
System.out.println(arr1.length);
/**
* 方法引用
*/
int[] arr2 = createArray(10, int[]::new);
System.out.println(Arrays.toString(arr2));
System.out.println(arr2.length);
}
}