Java :: no es tan complicado como parece: Aprende a usarlo

| Última modificación: 15 de octubre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

El operador Java:: puede parecer un concepto intimidante, pero la realidad es que, si aprendes a usarlo, se convertirá en tu aliado para lograr código más limpio y eficiente. Aquí te explicaré de manera sencilla qué es Java ::, para qué sirven los :: en Java, y cómo puedes aplicarlo para mejorar tu flujo de trabajo.

qué es Java ::

¿Qué es Java :: y para qué sirve?

El operador :: en Java se introdujo en Java 8 como parte de las mejoras de la programación funcional y permite la referencia a métodos o funciones que ya existen, en lugar de tener que reescribirlas o definir expresiones lambda repetitivas. Esto hace que tu código sea más conciso, fácil de leer y mantener.

¿Cómo funciona el operador :: en Java?

Con este sencillo ejemplo lograrás entender cómo funciona :: en Java. Imagina que tienes una lista de números y necesitas realizar operaciones con ellos, como sumarlos o imprimir cada número en la consola. Normalmente, lo harías usando una expresión lambda, que podría verse así:

lista.forEach((n) -> System.out.println(n));

Este código recorre cada elemento de la lista y lo imprime. Sin embargo, con Java ::, puedes simplificarlo aún más. ¿Cómo? En lugar de definir la operación lambda, referencia directamente el método que ya existe:

lista.forEach(System.out::println);

Como ves, con el operador :: en Java, logras acceder directamente al método println de la clase System, haciendo que tu código sea más compacto y fácil de leer.

Usando Java :: en operaciones más complejas

En cuanto a las operaciones más complejas, como una reducción, tendrías que entender lo siguiente: Una operación de reducción toma una colección de datos (en este caso, nuestra lista de números) y aplica una función para devolver un solo resultado.

De modo que, si quieres sumar todos los números de una lista, podrías usar esta reducción:

Optional<Integer> resultado = lista.reduce((num1, num2) -> num1 + num2);

Como ves, se suman los números de la lista utilizando una expresión lambda, pero, de nuevo, puedes simplificarlo si usas :: en Java para referenciar directamente el método sum de la clase Integer:

Optional<Integer> resultado = lista.reduce(Integer::sum);

Con este simple cambio, logras un código más legible y no tienes que escribir la misma operación una y otra vez. Esta es la gran ventaja de utilizar Java ::, que nos permite reutilizar funciones ya existentes sin necesidad de redundancia.

Tipos de referencias a métodos en Java ::

El operador :: en Java puede utilizarse para referenciar distintos tipos de métodos. Estos son los 4 principales:

  • Referencia a un método estático: Este tipo de referencia es el que hemos visto en los ejemplos anteriores. Utiliza el formato Clase::método, como en el caso de Integer::sum.
  • Referencia a un método de instancia de un objeto: En este caso, puedes referenciar un método de un objeto existente. Por ejemplo, si tienes un objeto de la clase String, podrías referenciar su método toUpperCase:
String texto = "hola";
Supplier<String> supplier = texto::toUpperCase;
  • Referencia a un método de instancia de un objeto arbitrario: También puedes referenciar métodos de cualquier instancia de una clase, no solo de una instancia específica. Sería así:
Function<String, String> function = String::toLowerCase;
  • Referencia a un constructor: Este tipo de referencia se utiliza para crear objetos. Entonces, si tienes una clase Persona, puedes referenciar su constructor de esta manera:
Supplier<Persona> supplier = Persona::new;

¿Cuándo usar los :: en Java?

Es muy importante que sepas cuándo realmente es necesario usar los :: en Java. Te servirá mucho en los siguientes escenarios:

  • Siempre que tengas una expresión lambda que haga referencia a un método existente y quieras simplificar tu código.
  • Si trabajas con streams (flujos de datos) y realizas operaciones como filter, map o reduce, es muy probable que puedas usar Java :: para hacer que tu código sea más legible.
  • Si te interesa la programación funcional, entender el uso del operador :: en Java es esencial para aprovechar al máximo las capacidades de este paradigma en el lenguaje.

Ahora sabes que Java :: no es tan complicado como parece. Al principio te puede intimidar, pero una vez que lo comprendes, te das cuenta de que es una herramienta poderosa que simplifica el código y lo hace más eficiente.

Profundiza más en Java y aprende a dominar todas sus funcionalidades, en el Bootcamp de Java Full Stack de KeepCoding. No solo aprenderás a usar herramientas como Java ::, sino que también adquirirás todas las habilidades necesarias para convertirte en un desarrollador profesional.

Además, ingresarás a un sector con una alta demanda de profesionales, donde los salarios son elevados y la estabilidad laboral es mucho mayor que en otros sectores. ¡Inscríbete y transforma tu vida en el mundo de la tecnología!

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Java y Spring Boot

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado