method & constructor Reference

在Java 8中,引入了方法引用(Method Reference)和构造器引用(Constructor Reference)这两个特性,它们用于简化Lambda表达式,使代码更加清晰易读。

方法引用(Method Reference):

方法引用允许您直接引用现有的方法作为Lambda表达式的替代。语法为類名::方法名,或者是實例::方法名,有以下幾種情況:

  1. 靜態方法引用:使用類名和方法名引用靜態方法。例如:類名::靜態方法名

  2. 實例方法引用:使用對象實例的方法名引用實例方法。例如:實例::實例方法名

  3. 特定類型的方法引用:將特定對象的方法引用賦值給通用接口。例如:類型::實例方法名

  4. 構造器引用:引用構造器,語法為類名::new。例如:ArrayList::new

構造器引用(Constructor Reference):

構造器引用是方法引用的一個特例,用於創建物件。它類似於靜態方法引用,但語法為類名::new,用來創建與給定類構造函數兼容的物件。

方法引用和構造器引用的優點在於它們可以使代碼更加簡潔易讀,特別是對於一些簡單的操作,可以直接引用已有的方法或構造器,避免了重複編寫相似的Lambda表達式。

以下是一個使用方法引用和構造器引用的簡單示例:

範例一

import java.util.List;
import java.util.ArrayList;

public class MethodReferenceExample {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");
        
        // 使用方法引用打印每個名字
        names.forEach(System.out::println);
        
        // 使用構造器引用創建一個新的ArrayList物件
        List<String> newList = createList(ArrayList::new);
    }
    
    // 構造器引用示例
    public static <T> List<T> createList(Creator<List<T>> creator) {
        return creator.create();
    }
}

// 自定義的函數式接口,用於創建物件
interface Creator<T> {
    T create();
}

範例二

總之,方法引用和構造器引用是Java 8引入的便利特性,使得代碼更加簡潔和可讀,尤其是在處理一些常見操作時。它們是函數式編程風格的重要組成部分,可以大大提高代碼的可維護性和可讀性。

Last updated