Referenciando métodos que aceitam parâmetros:
Podemos usar method references para métodos que recebem argumentos, como println da classe PrintStream.
Exemplo:
usuarios.forEach(System.out::println);
O compilador entende que System.out::println é equivalente a um lambda:
u -> System.out.println(u);
Durante a iteração com forEach, cada elemento da lista é passado automaticamente como argumento para println.
Equivalência com código Java 7:
O método reference é equivalente ao laço tradicional:
for (Usuario u : usuarios) {
System.out.println(u);
}
Importância do toString:
Para exibir corretamente os usuários, o método toString deve ser sobrescrito na classe Usuario:
public String toString() {
return "Usuario " + nome;
}
Exemplo completo em Java:
public class Capitulo6 {
public static void main(String... args) {
Usuario user1 = new Usuario("Paulo Silveira", 150);
Usuario user2 = new Usuario("Rodrigo Turini", 120);
Usuario user3 = new Usuario("Guilherme Silveira", 190);
List<Usuario> usuarios = Arrays.asList(user1, user2, user3);
usuarios.forEach(System.out::println);
}
}
Esse código cria uma lista de usuários e imprime cada um usando System.out::println.
Conclusão:
Quando usamos System.out::println, o compilador entende que cada item da lista será passado como argumento ao método println.
Method references tornam o código mais conciso e legível.
O toString da classe Usuario deve ser sobrescrito para que a saída seja mais informativa.
Top comments (0)