何为构造器引用
与函数式接口相结合,自动与函数式接口中方法兼容。
格式
ClassName::new
有如下两种使用情况
构造器引用
构造器引用
ClassName::new
/**
* 构造器引用
* ClassName::new
*/
@Test
public void test5(){
Supplier<Employee> sup = () -> new Employee();
Employee emp = sup.get();
System.out.println(emp);
//默认的是类中的无参构造器
Supplier<Employee> sup1 = Employee::new;
Employee emp1 = sup1.get();
System.out.println(emp1);
}
@Test
public void test6(){
Function<Integer,Employee> fun = (x) -> new Employee(x);
Employee emp1 = fun.apply(121);
System.out.println(emp1);
Function<Integer,Employee> fun2 = Employee::new;
Employee emp2 = fun.apply(131);
System.out.println(emp2);
BiFunction<Integer,Integer,Employee> bifun = Employee::new;
}
数组引用
数组引用
Type[]::new
/**
* 数组引用
* Type[]::new
*/
@Test
public void test7(){
Function<Integer,String[]> fun = (x) -> new String[x];
String[] app = fun.apply(5);
System.out.println(app.length);
Function<Integer,String[]> fun2 = String[]::new;
String[] app2 = fun2.apply(10);
System.out.println(app2.length);
}
