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

时间:2018-04-25 16:11:47

标签: java constructor

我是java新手并开始研究构造函数。我看到几个示例,其中构造函数作为参数传递给Method。请告诉我当构造函数作为参数传递给方法时会发生什么。或者建议我在哪里可以获得有关使用构造函数的足够知识

2 个答案:

答案 0 :(得分:0)

构造函数可以使用方法引用作为方法传递给方法,有点像C ++中的函数指针。

请参阅:http://www.baeldung.com/java-8-double-colon-operator

这可以是带有一个参数的Function类型或带有两个参数的BiFunction类型,无论是lambda还是返回它构造的类的类。

就像图灵85所说,虽然我不认为这是你想要的。将构造函数作为参数传递是一个非常小众的用例。如果您只想获得有关构造函数的信息,

https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html

答案 1 :(得分:0)

根据您为什么需要传递构造函数的目的,您可以考虑传递Supplier实例(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;
}

然后使用lambda:

将构造函数传递给此方法
createNewAccount(() -> new UserAccount());

或使用方法参考:

createNewAccount(UserAccount::new);

两种变体都在起作用。