6.6 Referenciando construtores
Uso de method reference com construtores: Assim como métodos estáticos, podemos referenciar construtores usando new: Usuario rodrigo = Usuario::new; // ERRO! Esse código não compila porque Usuario não é uma interface funcional. Utilizando Supplier para construtor sem argumentos: A interface funcional Supplier é usada para criar objetos sem argumentos: Supplier criadorDeUsuarios = Usuario::new; Usuario novo = criadorDeUsuarios.get(); O método get() é chamado para instanciar um novo objeto. Criando instâncias com argumento usando Function: Para construtores que recebem um argumento, usamos Function: Function criadorDeUsuarios = Usuario::new; Usuario rodrigo = criadorDeUsuarios.apply("Rodrigo Turini"); Usuario paulo = criadorDeUsuarios.apply("Paulo Silveira"); O método apply() recebe o argumento e cria o objeto. Criando instâncias com dois argumentos usando BiFunction: Para construtores com dois parâmetros, usamos BiFunction: BiFunction criadorDeUsuarios = Usuario::new; Usuario rodrigo = criadorDeUsuarios.apply("Rodrigo Turini", 50); Usuario paulo = criadorDeUsuarios.apply("Paulo Silveira", 300); apply(arg1, arg2) é usado para passar os dois argumentos. Construtores com mais de dois argumentos: O Java não fornece interfaces funcionais para mais de dois parâmetros. Se necessário, podemos criar uma interface funcional personalizada, como TriFunction. Conclusão: Method references podem ser usados para instanciar objetos via construtores. Interfaces como Supplier, Function e BiFunction ajudam a referenciar construtores com diferentes quantidades de argumentos. Para mais de dois parâmetros, é necessário criar uma interface funcional personalizada. Referenciandooconstrutorde um Array consigo usar constructor reference com um array, mas neste casoasintaxevaim u d a r umpouco. Bastaadicionaroscolchetesdoarray antes do delimitador ::, porexemplo: int[]::new.

Uso de method reference com construtores:
Assim como métodos estáticos, podemos referenciar construtores usando new:
Usuario rodrigo = Usuario::new; // ERRO!
Esse código não compila porque Usuario não é uma interface funcional.
Utilizando Supplier para construtor sem argumentos:
A interface funcional Supplier é usada para criar objetos sem argumentos:
Supplier criadorDeUsuarios = Usuario::new;
Usuario novo = criadorDeUsuarios.get();
O método get() é chamado para instanciar um novo objeto.
Criando instâncias com argumento usando Function:
Para construtores que recebem um argumento, usamos Function:
Function criadorDeUsuarios = Usuario::new;
Usuario rodrigo = criadorDeUsuarios.apply("Rodrigo Turini");
Usuario paulo = criadorDeUsuarios.apply("Paulo Silveira");
O método apply() recebe o argumento e cria o objeto.
Criando instâncias com dois argumentos usando BiFunction:
Para construtores com dois parâmetros, usamos BiFunction:
BiFunction criadorDeUsuarios = Usuario::new;
Usuario rodrigo = criadorDeUsuarios.apply("Rodrigo Turini", 50);
Usuario paulo = criadorDeUsuarios.apply("Paulo Silveira", 300);
apply(arg1, arg2) é usado para passar os dois argumentos.
Construtores com mais de dois argumentos:
O Java não fornece interfaces funcionais para mais de dois parâmetros.
Se necessário, podemos criar uma interface funcional personalizada, como TriFunction.
Conclusão:
Method references podem ser usados para instanciar objetos via construtores.
Interfaces como Supplier, Function e BiFunction ajudam a referenciar construtores com diferentes quantidades de argumentos.
Para mais de dois parâmetros, é necessário criar uma interface funcional personalizada.
Referenciandooconstrutorde um Array
consigo usar constructor reference com um array, mas neste
casoasintaxevaim u d a r umpouco. Bastaadicionaroscolchetesdoarray
antes do delimitador ::, porexemplo: int[]::new.