Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Referência de Método em Java | Recursos e Técnicas Avançadas de Java
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Estruturas de Dados em Java

bookReferência de Método em Java

Antes de praticar com a Stream API, devemos explorar alguns atalhos para expressões lambda. Programadores se referem a esses "atalhos" como açúcar sintático.

Neste capítulo, discutiremos referências de métodos e como utilizá-las como substitutas para expressões lambda.

Referências de Métodos

Vamos analisar um exemplo simples de uma expressão lambda e tentar substituí-la por uma referência de método:

Main.java

Main.java

copy
1234567891011
package 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)); } }

O uso de duas expressões lambda não é muito elegante, especialmente quando é possível simplificá-las para referências de método das classes onde estão declaradas.

A sintaxe será assim:

Example.java

Example.java

copy
1
(Class::Method)

Vamos aprimorar o código acima utilizando referências de métodos:

Main.java

Main.java

copy
1234567891011
package 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, portanto utilizamos a construção String::toUpperCase. Observe que, ao usar uma referência de método, a operação será aplicada a cada elemento, não sendo necessário utilizar 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.

Além disso, o próprio IntelliJ IDEA sugere constantemente a substituição de expressões lambda por referências de métodos quando essa operação é possível, então não é necessário memorizar a sintaxe toda vez.

Dessa forma, o IntelliJ IDEA irá sugerir melhorias no seu código utilizando referências de métodos.

Resumo

Em resumo, referências de métodos não adicionam nenhuma complexidade programática. Elas não otimizam o processo, mas também não o complicam. Essa construção serve apenas para reduzir um pouco o código escrito e melhorar a legibilidade. A escolha entre usar expressões lambda ou referências de métodos fica a seu critério. Por exemplo, considero mais claro escrever uma expressão lambda e, em seguida, o IntelliJ irá substituí-la automaticamente por uma referência de método.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 4

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

Can you show more examples of method references?

What are the different types of method references in Java?

When should I use a method reference instead of a lambda expression?

bookReferência de Método em Java

Deslize para mostrar o menu

Antes de praticar com a Stream API, devemos explorar alguns atalhos para expressões lambda. Programadores se referem a esses "atalhos" como açúcar sintático.

Neste capítulo, discutiremos referências de métodos e como utilizá-las como substitutas para expressões lambda.

Referências de Métodos

Vamos analisar um exemplo simples de uma expressão lambda e tentar substituí-la por uma referência de método:

Main.java

Main.java

copy
1234567891011
package 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)); } }

O uso de duas expressões lambda não é muito elegante, especialmente quando é possível simplificá-las para referências de método das classes onde estão declaradas.

A sintaxe será assim:

Example.java

Example.java

copy
1
(Class::Method)

Vamos aprimorar o código acima utilizando referências de métodos:

Main.java

Main.java

copy
1234567891011
package 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, portanto utilizamos a construção String::toUpperCase. Observe que, ao usar uma referência de método, a operação será aplicada a cada elemento, não sendo necessário utilizar 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.

Além disso, o próprio IntelliJ IDEA sugere constantemente a substituição de expressões lambda por referências de métodos quando essa operação é possível, então não é necessário memorizar a sintaxe toda vez.

Dessa forma, o IntelliJ IDEA irá sugerir melhorias no seu código utilizando referências de métodos.

Resumo

Em resumo, referências de métodos não adicionam nenhuma complexidade programática. Elas não otimizam o processo, mas também não o complicam. Essa construção serve apenas para reduzir um pouco o código escrito e melhorar a legibilidade. A escolha entre usar expressões lambda ou referências de métodos fica a seu critério. Por exemplo, considero mais claro escrever uma expressão lambda e, em seguida, o IntelliJ irá substituí-la automaticamente por uma referência de método.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 4
some-alt