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.