Function<Usuario, String> funcao = Usuario::getNome;
Function<Usuario, String> funcao = Usuario::getNome;
Bom dia, Diego, tudo bem?
Esse função, aplicada no seguinte contexto, ordena por ordem alfabética.
Basicamente ela é um lambda que dado um usuario retorna o nome dele.
Se você pegar essa função e colocar no System.out.println(funcao) vai ser exibido no console
"br.com.lucas.collections.Lambda$$Lambda$1/531885035@776ec8df"
List<Usuario> usuarios = new ArrayList<Usuario>();
Function<Usuario, String> funcao = Usuario::getNome;
Usuario u1 = new Usuario();
u1.setNome("Lucas");
Usuario u2 = new Usuario();
u2.setNome("Joao");
Usuario u3 = new Usuario();
u3.setNome("Ana");
usuarios.add(u1);
usuarios.add(u2);
usuarios.add(u3);
usuarios.sort(Comparator.comparing(funcao));
usuarios.forEach(System.out::println);