Передача конструктора в качестве параметра методу - PullRequest
0 голосов
/ 25 апреля 2018

Я новичок в Java и начал работать над конструкторами.Я вижу несколько примеров, когда конструктор передается в качестве параметра для метода.Пожалуйста, скажите мне, что происходит, когда конструктор передается в качестве параметра методу ... или предложите мне несколько ссылок, где я могу получить достаточно знаний об использовании конструкторов

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

В зависимости от цели, почему вам нужно передать конструктор, вы можете вместо этого передать экземпляр поставщика (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;
}

И после этого передайте конструктор этому методу, либо используя лямбду:

createNewAccount(() -> new UserAccount());

Или используя ссылку на метод:

createNewAccount(UserAccount::new);

Оба варианта работают.

0 голосов
/ 25 апреля 2018

Конструкторы могут быть переданы как методы к методам, используя ссылку на метод, что-то вроде указателя на функцию в C ++.

См .: http://www.baeldung.com/java-8-double-colon-operator

Это может быть тип Function с одним аргументомили тип BiFunction с двумя аргументами, в любом случае это лямбда, возвращающая класс создаваемого им типа.

Как сказал Тьюринг85, хотя я не думаю, что это то, что вам нужно.Передача конструкторов в качестве параметров - довольно привлекательный вариант использования.Если вы просто хотите получить информацию о конструкторах,

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...