Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Expressão lambda realmente cria uma classe que implementa Comparator?

lista.sort( (Conta c1, Conta c2) -> {
        return c1.getNumero() - c2.getNumero;
        }
)

Nesse trexo de código, o professor diz que, por baixo dos panos, é criada uma classe anônima que implementa Comparator da mesma forma.

Porém, eu notei que não é necessário nenhum import da classe Comparator para que esse código rode, e o arquivo .class com o $1 não aparece no package explorer.

Por que?

3 respostas
solução!

Fala ai Eduardo, de boa ?

Cara isso é feito em tempo de compilação, a jvm identifica esse código e faz a troca para gente, da mesma forma, que faz o construtor default.

Lembra que ela também pode chamar a classe pelo nome completo, o que descarta a necessidade de import né ?

você chamou o método getNumero em c2 sem fechar o método, não vai compilar. além disso, o resultado do método estático .compare de integer já faz o trabalho em retornar -1, 0 ou 1.

lista.sort( (Conta c1, Conta c2) -> {
   return Integer.compare(c1.getNumero(), c2.getNumero();
   }
);

Matheus Brandino faz total sentido.. a jvm ja chama a classe com o nome completo, ou seja, java.util.Comparator....

valeu cara..

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software