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));
  }
}

上面的代码生成以下结果。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号