Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Parâmetro vazio - validar entendimento

Prezados, boa tarde.

Tenho uma dúvida em relação ao parâmetro vazio passado no construtor da Thread; contudo, após pensar um pouco acredito ter encontrado a solução da dúvida e no momento minha intenção é validar esse entendimento.

Inicialmente tentei a resolução da seguinte forma:

new Thread(r -> System.out.println("texto")).start();

O pensamento foi que a Thread recebe um Runnable (r) no construtor. Obviamente não resultou, pois como a solução mostra deve-se passar o argumento vazio, indicado apenas com os parênteses sem nada no interior.

Ao refletir sobre o gabarito a conclusão que cheguei foi que os parâmetros passados, seguindo a sintaxe do lambda, serão os parâmetros que o método abstrato da interface funcional receberia - ou seja, como o método run() da interface Runnable não recebe nenhum argumento, o parâmetro (i.e. o que vem antes da seta) é passado como vazio:

new Thread(() -> System.out.println("texto")).start();

Sendo mais sucinto, parece-me que na expressão lambda os parâmetros passados não têm ligação direta com o método que a usa como argumento, mas estará diretamente ligado ao método abstrato da interface funcional. A única ligação da expressão lambda com o método que a utiliza é na verdade em relação ao tipo.

1 resposta
solução!
 os parâmetros passados, seguindo a sintaxe do lambda, serão os parâmetros que o método abstrato da interface funcional receberia

Exatamente, é isso que você descreveu =)

new Thread(() -> System.out.println("texto")).start();

esse "() -> System.out.println("texto")" é um lambda que representa uma implementação do método run() da interface Runnable.