1
resposta

Duvida sobre qual classe ou interface o método chama (lambda)

1- Eu vi que o método .sort da List vai chamar um objeto do tipo Comparator, por isso ele consegue identificar que vai usar o método .compare dessa classe, mas e se supomos que a classe Comparator tivesse dois métodos que precisassem ser sobrescritos? Existe algum caso assim?

2- Posso usar lambda dentro de qualquer método? (Considerando que o método já sabe que tipo de referencia ele usa)

1 resposta

Olá!

Sobre a sua primeira dúvida, caso a classe Comparator tivesse mais de um método que precisasse ser sobrescrito, você precisaria informar qual método deve ser utilizado na sua expressão lambda. Por exemplo, se a classe Comparator tivesse um método compare e um método equals, você precisaria informar qual método deve ser utilizado na sua expressão lambda da seguinte forma:

Comparator<T> comparator = (obj1, obj2) -> obj1.compare(obj2);

Isso informaria que o método compare deve ser utilizado na sua expressão lambda.

Já sobre a sua segunda dúvida, é possível utilizar expressões lambda em qualquer método que receba um objeto do tipo funcional, ou seja, uma interface que tenha apenas um método abstrato. Isso inclui a interface Comparator, que é uma interface funcional.

Espero ter ajudado e bons estudos!