unit6 方法引用
1.Lambda表达式的简化,先有函数式接口Lambda表达式,再有方法的引用
方法引用符号:
通过对象名引用成员方法:略
通过类名引用静态成员方法:
接口:
@FunctionalInterface
public interface Calable {
//整数绝对值运算接口
int calAbs(int number);
}
实现:
public class StaticMethodReference {
//定义一个方法,参数传递接口的参数number
public static int method(int number,Calable c){
return c.calAbs(number);
}
public static void main(String[] args) {
//调用上述定义的method方法,传递的参数是number=-2,Lambda表达式
int number = method(-2,(number1 -> {
return Math.abs(number1);
}));
System.out.println(number);
//方法引用的使用,同上实现
int number2 = method(-1,Math::abs);
System.out.println(number2);
}
}
通过super引用父类的成员方法:super父子类继承关系
通过this引用本类的成员方法:this当前对象
2.类的构造器:类名称::new
//函数式接口,测试类中可以传递Lambda表达式
@FunctionalInterface
public interface PersonBuilder {
Person builderPerson(String name);
}
-----------------------------------------
public class PersonTest {
public static void printName(String name, PersonBuilder pb){
//定义一个方法,参数传递name和接口
Person person = pb.builderPerson(name);
System.out.println(person.getName());
}
public static void main(String[] args) {
//调用上概述方法,函数式接口,可以传递Lambda表达式的
printName("sjw",(String name)->{
return new Person("sjw");
});
//使用person的带参构造方法,通过传递的姓名创建对象
printName("linzi",Person::new);
}
}
数组构造器:类似上述。。