package com.chunzhi.Test10ArrayMethodReference;
import java.util.Arrays;
/*
数组的构造器引用
*/
public class Test {
/*
定义一个方法
方法的参数传递创建数组的长度和ArrayBuilder接口
方法内部根据传递的长度使用ArrayBuilder中的方法创建数组并返回
*/
public static int[] creatArray( int length, ArrayBuilder ab) {
return ab.builderArray(length);
}
public static void main(String[] args) {
// 调用createArray方法,传递数组的长度和Lambda表达式
int[] arr01 = creatArray(10, (int len) -> {
// 根据数组的长度,创建数组并返回
return new int[len];
});
System.out.println(arr01.length); // 10
/*
使用方法引用优化Lambda表达式
已知创建的就是int[]数组
数组的长度也是已知的
就可以使用方法引用
int[]引用new,根据参数传递的长度来创建数组
*/
int[] arr02 = creatArray(5, int[]::new);
System.out.println(Arrays.toString(arr02)); // 输出数组的内容:[0, 0, 0, 0, 0]
System.out.println(arr02.length); // 5
}
}
package com.chunzhi.Test10ArrayMethodReference;
/*
定义一个创建数组的函数式接口
*/
public interface ArrayBuilder {
// 定义一个创建int类型数组的方法,参数传递数组的长度,返回创建好的int类型数组
int[] builderArray (int length);
}