JKD8的新特性——构造器引用及数组引用

1. 构造器引用
和方法引用类似,函数式接口的抽象方法的形参列表和构造器的形参列表保持一致。
抽象方法的返回值类型即为构造器所属类的类型

123456789101112
@Test public void test(){ //bean对象需要含有对应的无参构造函数 //lambda表达式 Supplier<Employee> supplier=()->new Employee(3,"xiaobaicai",23,5000d); System.out.println("________________________________"); //构造器引用 Supplier<Employee> supplier1=Employee::new; System.out.println(supplier1.get()); }
123456789101112131415
@Test public void test2(){ Employee employee2=new Employee(); //传统的lambda表达式 Function<Integer,Employee> function=id->new Employee(); Employee employee=function.apply(100); System.out.println(employee); System.out.println("___________________________________"); //构造器引用 //bean必须含有对应的有参构造 Function<Integer,Employee> function1=Employee::new; Employee employee1 = function1.apply(21); System.out.println(employee1); }
12345678
@Test public void test3(){ //lambda表达式 BiFunction<Integer,String,Employee> function=(id,name)->new Employee(id,name); Employee employee = function.apply(1, "你好"); //构造方法引用 BiFunction<Integer,String,Employee> function2=Employee::new; }

2.数组引用
大家可以把数组看做一个特殊的类,则写法与构造器引用一致

12345678910111213
@Test public void test4(){ //数组引用 //Function中的R apply(T t) //1.lambda表达式的写法 Function<Integer,String[]> function=length-> new String[length]; String[] strings = function.apply(10); System.out.println(Arrays.toString(strings)); System.out.println("________________________________"); Function<Integer,String[]>function1=String[]::new; String[] strings1 = function1.apply(5); }
JDK8新特性——stream API 的使用
JKD8的新特性——方法引用
评论
zhangrenxian123小白菜
文章28
分类5
标签2