1
resposta

Dúvida sobre o operador "::"

Na aula, para escrever o método de comparação o instrutor utilizou:

Comparator.comparing(Aula::getTempo)

A minha dúvida é: O que seria esse operador "::" no Java e o que ele faz exatamente?

Na minha concepção, ele estaria chamando um método da classe Aula, mas nesse caso não seria necessário o "()" no final?

1 resposta

Olá Vinicius, tudo bem?

O operador "::" em Java é chamado de operador de referência a método. Ele é usado para referenciar um método de uma classe ou objeto sem executá-lo imediatamente. O operador "::" é uma forma mais concisa de passar um método como argumento para outro método ou construtor, em vez de criar uma classe anônima ou uma expressão lambda.

No seu exemplo, o operador "::" está sendo usado para referenciar o método getTempo() da classe Aula, que será utilizado no método comparing() da classe Comparator para realizar a comparação dos objetos Aula com base no tempo. O operador "::" é usado para obter uma referência ao método getTempo(), sem invocá-lo imediatamente.

O operador "::" não exige que você use parênteses após o nome do método. Por exemplo, o método getTempo() não recebe argumentos, portanto não é necessário o uso de parênteses. Se o método tivesse argumentos, o operador "::" seria seguido pelo nome do método e, em seguida, pelos parâmetros entre parênteses.