Pessoal, como eu estou praticando o uso de Lambdas, eu decidi implementar também, esta sintaxe:
Collections.sort(aulas, (tempo1, tempo2) -> Integer.compare(tempo1.getTempo(), tempo2.getTempo()));
System.out.println("Sort com Lambda e Comparator (tempo de aula): " + aulas);
Funcionou perfeitamente, mas a dúvida é: Como que o Java conseguiu inferir que os objetos "tempo1" e "tempo2" são do tipo Aula? O compilador busca essa informação através do tipo de lista que é passado no primeiro parâmetro? É isso mesmo?
E, se fosse:
aulas.sort((tempo1, tempo2) -> Integer.compare(tempo1.getTempo(), tempo2.getTempo())
Seria basicamente a mesma coisa: Pelo fato do objeto "aulas" ser uma lista de "Aula", o compilador sabe através do Lambda e pela Interface Funcional" Comparator" que tempo1 e tempo2 são objetos da classe Aula.
Essas afirmações são corretas ou eu estou me confundindo? Alguém pode me ajudar? Obrigado!