構造方法引用是什麼意思

在Java中,構造方法(Constructor)是用來初始化類別實例的。當你創建一個類別的實例時,Java會自動調用相應的構造方法來初始化這個實例。

構造方法引用(Constructor Reference)是一種簡化介面實例化過程的語法,它允許你將一個構造方法作為參數傳遞給一個方法。這種語法在Java 8中引入,用於簡化lambda表達式和方法引用的寫法。

下面是一個簡單的例子,展示了如何使用構造方法引用:

class Person {
    private final String name;

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

// 使用構造方法引用的例子
public class Main {
    public static void main(String[] args) {
        Person person = Person::new;
        System.out.println(person.getName()); // 輸出 Person 的 name 屬性
    }
}

在上面的例子中,Person::new 是一個構造方法引用,它指向Person類別的無參構造方法。當你將這個引用賦值給一個變數時,這個變數實際上是一個可以創建Person實例的 lambda 表達式。

構造方法引用通常用於Stream API中的mapflatMapfilter等方法,以及一些需要提供類別構造方法作為參數的方法,比如java.util.function.Supplier

需要注意的是,構造方法引用只能引用無參的構造方法,或者帶有與參數化介面方法相匹配的參數列表的構造方法。如果類別沒有匹配的構造方法,編譯器會報錯。