Java 构造函数引用
2018-03-18 16:33 更新
Java Lambda - Java构造函数引用
我们可以使用构造函数创建一个lambda表达式。
使用构造函数引用的语法是:
ClassName::new关键字new指的是类的构造函数。编译器根据上下文选择一个构造函数。
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("www.w3cschool.cn"));
Supplier<String> func3 = String::new;
System.out.println("Empty String:"+func3.get());
Function<String,String> func4 = String::new;
System.out.println(func4.apply("www.w3cschool.cn"));
}
}
上面的代码生成以下结果。

数组构造函数引用
我们可以使用数组构造函数创建一个数组如下。
ArrayTypeName::new int [] :: new 是调用 new int [] 。 new int [] 需要一个 int 类型值作为数组长度,因此 int [] :: new 需要一个 int 类型输入值。
以下代码使用数组构造函数引用创建一个int数组。
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));
}
}
上面的代码生成以下结果。

例2
通过使用 Function< Integer,Array Type> ,我们可以在声明中指定数组类型。
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));
}
}
上面的代码生成以下结果。

例3
我们可以在创建二维数组时指定第一维的长度。
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));
}
}
上面的代码生成以下结果。

以上内容是否对您有帮助:

免费 AI IDE


更多建议: