**
* 1.构造器引用
* 2.数组引用
* 大家可以把数组看成是一个特殊的类,则写法与构造器一致
*/
public class ConstructorRefTest {
//构造器引用
//Supplier中的T get()
//Employee的无参构造方法 Employee();
@Test
public void test1(){
//原始的
Supplier<Employee> supplier=new Supplier<Employee>() {
@Override
public Employee get() {
return new Employee();
}
};
//lambda表达式
Supplier<Employee> supplier2=()->new Employee();
//构造器引用
Supplier<Employee> supplier3=Employee::new;
}
/**
* Function 中的R apply(T t)
* Employee的无参构造方法 Employee(id);
*/
@Test
public void test2(){
Function<Integer,Employee> function=id->new Employee(id);
Employee employee=function.apply(1112);
System.out.println(employee);
System.out.println("**************************************");
Function<Integer,Employee> function2=Employee::new;
Employee apply = function2.apply(123);
System.out.println(apply);
}
/** 数组引用
* Function 中的R apply(T t)
*
*/
@Test
public void test3(){
Function<Integer,String[]> function=length->new String[length];
String[] apply = function.apply(5);
System.out.println(Arrays.toString(apply));
System.out.println("*****************************");
Function<Integer,String[]> function2=String[] :: new;
String[] apply2 = function2.apply(4);
System.out.println(Arrays.toString(apply2));
}
}