Olá Raphael, tudo bem com você?
O Integer.compare()
é apenas um método da classe Integer
e não possui qualquer relação direta com as expressões lambdas. Diferente do método abstrato compare()
que pertence à interface funcional Comparator
.
Pensa que as expressões lambdas são as implementações dos métodos métodos abstratos de interfaces funcionais.
Em outras palavras, nós temos interfaces funcionais que são, basicamente, interfaces que possuem um único método abstrato. E, funcionando em conjunto com essas interfaces, temos expressões lambdas que são a forma como definimos um comportamento a esses métodos abstratos.
Nesse exemplo, o método sort()
deve receber uma implementação de Comparator
. O Java, sabendo que essa interface possui apenas um método abstrato compare(T o1, T o2)
, vai considerar a expressão lambda (c1, c2) -> Integer.compare(c1.getNumero(), c2.getNumero())
como a implementação dessa interface.
Vou deixar aqui as referências para as classes e métodos que citei:
Fez sentido? Se ficou alguma dúvida, por favor, me avise! ;)
Grande abraço e bons estudos!!