我們可以使用構(gòu)造函數(shù)創(chuàng)建一個(gè)lambda表達(dá)式。
使用構(gòu)造函數(shù)引用的語法是:
ClassName::new
關(guān)鍵字new指的是類的構(gòu)造函數(shù)。編譯器根據(jù)上下文選擇一個(gè)構(gòu)造函數(shù)。
import java.util.function.Function; import java.util.function.Supplier; public class Main{ public static void main(String[] argv){ Supplier<String> func1 = () -> new String(); System.out.println("Empty String:"+func1.get()); Function<String,String> func2 = str -> new String(str); System.out.println(func2.apply("m.o2fo.com")); Supplier<String> func3 = String::new; System.out.println("Empty String:"+func3.get()); Function<String,String> func4 = String::new; System.out.println(func4.apply("m.o2fo.com")); } }
上面的代碼生成以下結(jié)果。
我們可以使用數(shù)組構(gòu)造函數(shù)創(chuàng)建一個(gè)數(shù)組如下。
ArrayTypeName::new
int [] :: new
是調(diào)用 new int []
。 new int []
需要一個(gè) int
類型值作為數(shù)組長度,因此 int [] :: new
需要一個(gè) int
類型輸入值。
以下代碼使用數(shù)組構(gòu)造函數(shù)引用創(chuàng)建一個(gè)int數(shù)組。
import java.util.Arrays; import java.util.function.IntFunction; public class Main{ public static void main(String[] argv){ IntFunction<int[]> arrayCreator1 = size -> new int[size]; // Creates an int array of five elements int[] intArray1 = arrayCreator1.apply(5); System.out.println(Arrays.toString(intArray1)); IntFunction<int[]> arrayCreator2 = int[]::new; int[] intArray2 = arrayCreator2.apply(5); System.out.println(Arrays.toString(intArray2)); } }
上面的代碼生成以下結(jié)果。
通過使用 Function< Integer,Array Type>
,我們可以在聲明中指定數(shù)組類型。
import java.util.Arrays; import java.util.function.Function; public class Main{ public static void main(String[] argv){ Function<Integer,int[]> arrayCreator3 = int[]::new; int[] intArray = arrayCreator3.apply(5); System.out.println(Arrays.toString(intArray)); } }
上面的代碼生成以下結(jié)果。
我們可以在創(chuàng)建二維數(shù)組時(shí)指定第一維的長度。
import java.util.Arrays; import java.util.function.IntFunction; public class Main{ public static void main(String[] argv){ IntFunction<int[][]> TwoDimArrayCreator = int[][]::new; int[][] intArray = TwoDimArrayCreator.apply(5); // Creates an int[5][] array intArray[0] = new int[5]; intArray[1] = new int[5]; intArray[2] = new int[5]; intArray[3] = new int[5]; intArray[4] = new int[5]; System.out.println(Arrays.deepToString(intArray)); } }
上面的代碼生成以下結(jié)果。
更多建議: