Olá Thiago! Obrigado pelo retorno, meu caro!
Legal, a sua explicação já clareou um pouco mais... : )
Então, a utilização de lambda só vale para interfaces funcionais, beleza!
E se uma interface é funcional, significa, que posso utilizar lambda, e para utilizar a lambda basta implementar o único método abstrato dessa interface, beleza! Então assim, a assinatura do método em si é "praticamente ignorada", pois o que deve ser observado não é o método em si, e sim o método funcional da interface que é passada como parâmetro no método chamado... Veja:
Ex: assinatura do método comparing:
comparing(Function<? super T,? extends U> keyExtractor): Comparator - Comparator
Esse método recebe uma Function, Function é uma Interface funcional, então dentro do método comparing implemento o método abstrato da Interface Function
R apply(T t)
Se eu estiver equivocado até aqui, por favor me corrija !!! : )
Agora, Thiago, no eclipse, ao programar, ele vai exibindo o javadoc do método/classe enquanto se digita... No caso a IDE exibe a assinatura do método comparing comparing(Function<? super T,? extends U> keyExtractor): Comparator - Comparator, você consegue apenas pela assinatura identificar que aqui se pode utilizar lambda ? Ou é um aprendizado que vai acontecendo de visitar o javadoc, e quando você programa você já sabe que Function é uma interface, e por ser uma interface, você pode usar lambda?
Outra coisa Thiago, a documentação do javadoc, tem muitos caracteres 'especiais', <?,T,U,R,super>... etc. Existe algum curso/aula(s) aqui na Alura demonstrando na prática como interpretar a documentação ? Por que durante as aulas, os instrutores até mostraram ela, mas não como interpretar ela na essência...