DEV Community

FUNDAMENTOS JAVA
FUNDAMENTOS JAVA

Posted on

1

Referências de construtor

  • A referência a um construtor usa a sintaxe: nomeclasse::new.

  • Pode ser atribuída a uma interface funcional que tenha um método compatível com o construtor.

Exemplo com Construtor Parametrizado

  • Se a interface funcional tem um método com um parâmetro, a referência será associada ao construtor com esse parâmetro.

MyFunc myClassCons = MyClass::new;
MyClass mc = myClassCons.func("Testing");

  • Aqui, MyClass(String s) é o construtor referenciado.

Exemplo com Construtor Padrão

  • Para referenciar o construtor sem parâmetros, é necessário usar uma interface funcional cujo método também não tenha parâmetros.

MyFunc2 myClassCons = MyClass::new;
MyClass mc = myClassCons.func();

Uso com Classes Genéricas

  • Para classes genéricas, pode-se especificar o tipo no momento da criação da referência.

MyGenClass<Integer>::new;

  • Graças à inferência de tipos, a especificação nem sempre é obrigatória.

Inferência de Tipos

  • A referência ao construtor seleciona automaticamente o que mais se adapta ao método da interface funcional.

// Demonstra uma referência de constructor.
// MyFunc é uma interface funcional cujo método retorna
// uma referência MyClass.
interface MyFunc {
MyClass func(String s);
}
class MyClass {
private String str;
// Este construtor recebe um argumento.
MyClass(String s) { str = s; }
// Este é o construtor padrão.
MyClass() { str = ""; }
// ...
String getStr() { return str; }
}
class ConstructorRefDemo {
public static void main(String args[])
{
// Cria uma referência ao construtor de MyClass.
// Já que o método func() de MyFunc recebe um argumento,
// new referencia o construtor parametrizado de MyClass
// e não o construtor padrão.
MyFunc myClassCons = MyClass::new; Uma referência de construtor
// Cria uma instância de MyClass usando essa referência de construtor.
MyClass mc = myClassCons.func("Testing");
// Usa a instância de MyClass recém criada.
System.out.println("str in mc is " + mc.getStr( ));
}
}

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs