Referencia a Métodos en Java
Antes de comenzar a practicar con la API Stream, es conveniente explorar algunos atajos para las expresiones lambda. Los programadores se refieren a estos "atajos" como azúcar sintáctico.
En este capítulo, abordaremos las referencias a métodos y cómo utilizarlas como sustitutos de las expresiones lambda.
Referencias a Métodos
Veamos un ejemplo sencillo de una expresión lambda e intentemos reemplazarla por una referencia 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)); } }
El uso de dos expresiones lambda no resulta muy elegante, especialmente cuando se pueden simplificar utilizando referencias a métodos de las clases donde están declaradas.
La sintaxis será la siguiente:
Example.java
1(Class::Method)
Mejorar el código anterior utilizando referencias a 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); } }
El método toUpperCase es parte de la clase String, por lo que se utiliza la construcción String::toUpperCase. Tenga en cuenta que al usar una referencia a método, la operación se aplicará a cada elemento, por lo que no es necesario utilizar una expresión lambda para esto. También se reemplazó la impresión en pantalla por System.out::print, que también es una referencia a método. El programa aplicará el método System.out.print() a cada elemento.
Por cierto, IntelliJ IDEA sugiere constantemente reemplazar expresiones lambda por referencias a métodos si es posible, por lo que no es necesario memorizar la sintaxis cada vez.
De esta manera, IntelliJ IDEA sugerirá mejorar tu código utilizando referencias a métodos.
Resumen
En resumen, las referencias a métodos no agregan ninguna carga programática. No optimizan el proceso, pero tampoco lo complican. Esta construcción sirve simplemente para reducir ligeramente el código escrito y mejorar la legibilidad. La decisión de utilizar expresiones lambda o referencias a métodos depende de ti. Por ejemplo, considero más claro escribir una expresión lambda, y luego IntelliJ la reemplazará automáticamente por una referencia a método.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
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?
Genial!
Completion tasa mejorada a 4
Referencia a Métodos en Java
Desliza para mostrar el menú
Antes de comenzar a practicar con la API Stream, es conveniente explorar algunos atajos para las expresiones lambda. Los programadores se refieren a estos "atajos" como azúcar sintáctico.
En este capítulo, abordaremos las referencias a métodos y cómo utilizarlas como sustitutos de las expresiones lambda.
Referencias a Métodos
Veamos un ejemplo sencillo de una expresión lambda e intentemos reemplazarla por una referencia 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)); } }
El uso de dos expresiones lambda no resulta muy elegante, especialmente cuando se pueden simplificar utilizando referencias a métodos de las clases donde están declaradas.
La sintaxis será la siguiente:
Example.java
1(Class::Method)
Mejorar el código anterior utilizando referencias a 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); } }
El método toUpperCase es parte de la clase String, por lo que se utiliza la construcción String::toUpperCase. Tenga en cuenta que al usar una referencia a método, la operación se aplicará a cada elemento, por lo que no es necesario utilizar una expresión lambda para esto. También se reemplazó la impresión en pantalla por System.out::print, que también es una referencia a método. El programa aplicará el método System.out.print() a cada elemento.
Por cierto, IntelliJ IDEA sugiere constantemente reemplazar expresiones lambda por referencias a métodos si es posible, por lo que no es necesario memorizar la sintaxis cada vez.
De esta manera, IntelliJ IDEA sugerirá mejorar tu código utilizando referencias a métodos.
Resumen
En resumen, las referencias a métodos no agregan ninguna carga programática. No optimizan el proceso, pero tampoco lo complican. Esta construcción sirve simplemente para reducir ligeramente el código escrito y mejorar la legibilidad. La decisión de utilizar expresiones lambda o referencias a métodos depende de ti. Por ejemplo, considero más claro escribir una expresión lambda, y luego IntelliJ la reemplazará automáticamente por una referencia a método.
¡Gracias por tus comentarios!