Java 構(gòu)造函數(shù)引用

2018-03-18 16:33 更新

Java Lambda - Java構(gòu)造函數(shù)引用

我們可以使用構(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ù)引用

我們可以使用數(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é)果。



例2

通過使用 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é)果。

例3

我們可以在創(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é)果。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號