DEV Community

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( ));
}
}

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (0)

Image of AssemblyAI

Automatic Speech Recognition with AssemblyAI

Experience near-human accuracy, low-latency performance, and advanced Speech AI capabilities with AssemblyAI's Speech-to-Text API. Sign up today and get $50 in API credit. No credit card required.

Try the API

👋 Kindness is contagious

Dive into an ocean of knowledge with this thought-provoking post, revered deeply within the supportive DEV Community. Developers of all levels are welcome to join and enhance our collective intelligence.

Saying a simple "thank you" can brighten someone's day. Share your gratitude in the comments below!

On DEV, sharing ideas eases our path and fortifies our community connections. Found this helpful? Sending a quick thanks to the author can be profoundly valued.

Okay