将构造函数作为参数传递给方法

sad*_*ama 2 java constructor

我是 Java 新手,开始研究构造函数。我看到了几个将构造函数作为参数传递给方法的示例。请告诉我当构造函数作为参数传递给方法时会发生什么。

Yur*_*yko 5

根据您为什么需要传递构造函数的目的,您可以考虑改为传递供应商的实例(JavaDoc - https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier。 html)。例如,您有一个方法,它假设创建一个帐户并填写其中的所有内容。您可以使此方法接受供应商作为参数:

public Account createNewAccount(Supplier<Account> accountConstructor) {
    var account = accountConstructor.get();
    account.fillEverything();
    return account;
}
Run Code Online (Sandbox Code Playgroud)

然后使用 lambda 将构造函数传递给此方法:

createNewAccount(() -> new UserAccount());
Run Code Online (Sandbox Code Playgroud)

或使用方法参考:

createNewAccount(UserAccount::new);
Run Code Online (Sandbox Code Playgroud)

两种变体都在工作。