Muitas vezes me pergunto por que o Java usa ::
para referências de método em vez de .
, por exemplo, por que escrever
System.out::println
ao invés de
System.out.println
Obviamente, pode-se simplesmente responder: "porque os designers decidiram". Por outro lado, eu esperava a segunda sintaxe, porque o ponto é a sintaxe Java comum para acessar os membros da classe.
Existe algum motivo especial conhecido para introduzir a nova ::
sintaxe em vez de usar a .
convenção existente para referências de métodos?
Eles introduziram uma nova sintaxe porque o comportamento não é o mesmo.
Os
.
meios que você deseja obter uma referência sobre a função para invocá- la logo após.Quando você usa o método reference (
::
), deseja armazenar uma referência na função, mas não deseja invocá- la imediatamente.Um aspecto mais prático é como você diferenciaria entre um atributo público e um método com o mesmo nome com o
.
? Você simplesmente não pode. Com::
não há mais ambiguidade.fonte