java 基本语法(十七)Lambda (四)构造器引用与数组引用
标签:out 形参 override 列表 return fun pre 举例 构造器
1.构造器引用格式:
类名::new
2.构造器引用使用要求:
和方法引用类似,函数式接口的抽象方法的形参列表和构造器的形参列表一致。抽象方法的返回值类型即为构造器所属的类的类型
3.构造器引用举例:
//Supplier中的T get()
//Employee的空参构造器:Employee()
@Test
public void test1(){
Supplier sup = new Supplier() {
@Override
public Employee get() {
return new Employee();
}
};
System.out.println("*******************");
Supplier sup1 = () -> new Employee();
System.out.println(sup1.get());
System.out.println("*******************");
Supplier sup2 = Employee :: new;
System.out.println(sup2.get());
}
//Function中的R apply(T t)
@Test
public void test2(){
Function func1 = id -> new Employee(id);
Employee employee = func1.apply(1001);
System.out.println(employee);
System.out.println("*******************");
Function func2 = Employee :: new;
Employee employee1 = func2.apply(1002);
System.out.println(employee1);
}
//BiFunction中的R apply(T t,U u)
@Test
public void test3(){
BiFunction func1 = (id,name) -> new Employee(id,name);
System.out.println(func1.apply(1001,"Tom"));
System.out.println("*******************");
BiFunction func2 = Employee :: new;
System.out.println(func2.apply(1002,"Tom"));
}
4.数组引用格式:
数组类型[] :: new
5.数组引用举例:
//Function中的R apply(T t)
@Test
public void test4(){
Function func1 = length -> new String[length];
String[] arr1 = func1.apply(5);
System.out.println(Arrays.toString(arr1));
System.out.println("*******************");
Function func2 = String[] :: new;
String[] arr2 = func2.apply(10);
System.out.println(Arrays.toString(arr2));
}
java 基本语法(十七)Lambda (四)构造器引用与数组引用
标签:out 形参 override 列表 return fun pre 举例 构造器
原文地址:https://www.cnblogs.com/qiu-hua/p/13196655.html
评论