Referência do Método
Antes de mergulhar na prática com a Stream API, devemos explorar alguns atalhos para expressões lambda. Os programadores se referem a esses “atalhos” como açúcar sintático.
Neste capítulo, discutiremos referências de métodos e como usá-las como substitutos para expressões lambda.
Referências a Métodos
Vamos examinar um exemplo simples de uma expressão lambda e tentar substituí-la por uma referência a método:
main.java
1234567891011package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> example = Arrays.asList("c", "o", "d", "e", "f", "i", "n", "i", "t", "y"); example.stream().map(e -> e.toUpperCase()).forEach(e -> System.out.print(e)); } }
Utilizar duas expressões lambda não parece muito elegante, especialmente quando podemos simplificá-las para referências de métodos das classes onde são declaradas.
A sintaxe será assim:
example.java
1(Class::Method)
Vamos aprimorar o código acima utilizando referências de métodos:
main.java
1234567891011package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> example = Arrays.asList("c", "o", "d", "e", "f", "i", "n", "i", "t", "y"); example.stream().map(String::toUpperCase).forEach(System.out::print); } }
O método toUpperCase
faz parte da classe String
, então usamos a construção String::toUpperCase
. Observe que, ao usar uma referência de método, a operação será aplicada a cada elemento, então não há necessidade de usar uma expressão lambda para isso. Também substituímos a impressão na tela por System.out::print
, que também é uma referência de método. O programa aplicará o método System.out.print()
a cada elemento.
Aliás, o próprio IntelliJ IDEA constantemente sugere a substituição de expressões lambda por referências de método se tal operação for possível, então você não precisa memorizar a sintaxe toda vez.
Dessa forma, o próprio IntelliJ IDEA irá sugerir melhorias no seu código usando referências de métodos.
Resumo
Em resumo, referências de métodos não adicionam nenhuma carga programática. Elas não otimizam o processo, mas também não o complicam. Esta construção é simplesmente para reduzir levemente o código escrito e melhorar a legibilidade. Usar expressões lambda ou referências de métodos fica a seu critério. Por exemplo, acho mais claro escrever uma expressão lambda e depois o IntelliJ irá automaticamente substituí-la por uma referência de método.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 4
Referência do Método
Deslize para mostrar o menu
Antes de mergulhar na prática com a Stream API, devemos explorar alguns atalhos para expressões lambda. Os programadores se referem a esses “atalhos” como açúcar sintático.
Neste capítulo, discutiremos referências de métodos e como usá-las como substitutos para expressões lambda.
Referências a Métodos
Vamos examinar um exemplo simples de uma expressão lambda e tentar substituí-la por uma referência a método:
main.java
1234567891011package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> example = Arrays.asList("c", "o", "d", "e", "f", "i", "n", "i", "t", "y"); example.stream().map(e -> e.toUpperCase()).forEach(e -> System.out.print(e)); } }
Utilizar duas expressões lambda não parece muito elegante, especialmente quando podemos simplificá-las para referências de métodos das classes onde são declaradas.
A sintaxe será assim:
example.java
1(Class::Method)
Vamos aprimorar o código acima utilizando referências de métodos:
main.java
1234567891011package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> example = Arrays.asList("c", "o", "d", "e", "f", "i", "n", "i", "t", "y"); example.stream().map(String::toUpperCase).forEach(System.out::print); } }
O método toUpperCase
faz parte da classe String
, então usamos a construção String::toUpperCase
. Observe que, ao usar uma referência de método, a operação será aplicada a cada elemento, então não há necessidade de usar uma expressão lambda para isso. Também substituímos a impressão na tela por System.out::print
, que também é uma referência de método. O programa aplicará o método System.out.print()
a cada elemento.
Aliás, o próprio IntelliJ IDEA constantemente sugere a substituição de expressões lambda por referências de método se tal operação for possível, então você não precisa memorizar a sintaxe toda vez.
Dessa forma, o próprio IntelliJ IDEA irá sugerir melhorias no seu código usando referências de métodos.
Resumo
Em resumo, referências de métodos não adicionam nenhuma carga programática. Elas não otimizam o processo, mas também não o complicam. Esta construção é simplesmente para reduzir levemente o código escrito e melhorar a legibilidade. Usar expressões lambda ou referências de métodos fica a seu critério. Por exemplo, acho mais claro escrever uma expressão lambda e depois o IntelliJ irá automaticamente substituí-la por uma referência de método.
Obrigado pelo seu feedback!