O que faz o ::(dois pontos-dois pontos) em Java?

Queria que alguém pudesse explicar o que o :: faz em Java, se podem me dar um exemplo de como utilizar e de como funciona.

vamos la

salvo engano, a partir do Java versão 7 vc tem adição de varias features com inspiração em programação funcional.

uma dessas features é vc poder criar uma closure e passar para um metodo. aqui tem um exemplo com sort:

no java 8 surgiu o operador :: que tende a simplificar.

ao inves de fazer assim até o java 6

qqCoisa(new UmaClasse() {
    int metodo(int left, int right) {
        return Math.max(left, right);
    }
});

no java 7 vc pode usar um lambda

qqCoisa( (int left, int right) -> Math.max(left, right) );

e no java 8

qqCoisa(Math::max );

ou seja, se vc entendeu o que são lambdas, vai entender o :: que é basicamente um atalho caso vc queira passar uma referencia para um metodo que ja existe e simplicar assim a expressão.

aqui tem um pouco mais de detalhes:

http://cr.openjdk.java.net/~briangoetz/lambda/lambda-translation.html

perceba que vc se não entendeu lambdas, clojure ou uma pitada de programação funcional, isso ainda vai soar mistico para vc.

https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html

1 curtida