¿Cómo se utiliza Optional.isPresent() en Java? Casos prácticos explicados

| Última modificación: 16 de diciembre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Un verdadero reto en Java es el de trabajar con datos que podrían no estar presentes. Por eso, fue muy necesario que crearan Optional.isPresent() en Java, un método diseñado para saber si un valor está o no disponible dentro de un Optional. Tranquilo, sé que todo esto suena un poco complicado, pero te lo explicaré con ayuda de casos prácticos para que lo aprendas a usar.

Optional.isPresent() en Java qué es

¿Qué es Optional.isPresent() en Java?

El método Optional.isPresent() en Java es una de esas herramientas que no te pueden faltar. Te sirve para verificar si el contenedor Optional tiene un valor o está vacío. Si el valor existe, devuelve true; si no hay valor, devuelve false.

Sintaxis

public boolean isPresent()
  • Parámetros: No requiere ningún parámetro.
  • Retorno: Devuelve un valor booleano: true si hay un valor, false si está vacío.

¿Cómo funciona Optional.isPresent() en Java? Casos prácticos explicados

Gracias a este método podrás evitar excepciones como NullPointerException (a quienes muchos le huimos bastante), ya que puedes verificar si hay un valor antes de intentar acceder a él.

Te he preparado estos ejemplos para que lo entiendas mejor.

Verifica un valor presente con Optional.isPresent() en Java

import java.util.Optional;

public class Main {
public static void main(String[] args) {
// Crear un Optional con un valor
Optional<String> mensaje = Optional.of("KeepCoding es genial");

// Verificar si hay un valor presente
if (mensaje.isPresent()) {
System.out.println("Mensaje: " + mensaje.get());
} else {
System.out.println("No hay mensaje disponible.");
}
}
}

Mira la salida:
Mensaje: KeepCoding es genial

Si te diste cuenta, en este caso, como el Optional contiene un valor, isPresent() devuelve true.

Trabaja con un Optional vacío

import java.util.Optional;

public class Main {
public static void main(String[] args) {
// Crear un Optional vacío
Optional<String> mensaje = Optional.empty();

// Verificar si hay un valor presente
if (mensaje.isPresent()) {
System.out.println("Mensaje: " + mensaje.get());
} else {
System.out.println("No hay mensaje disponible.");
}
}
}

La salida te queda así:
No hay mensaje disponible.

Mira bien que, cuando el Optional está vacío, isPresent() devuelve false, para que no hayan errores al intentar acceder a un valor inexistente.

Uso práctico con listas

Supongamos que tienes una lista de usuarios y necesitas verificar si existe un usuario con un correo específico:

import java.util.Optional;
import java.util.Arrays;
import java.util.List;

public class Main {
public static void main(String[] args) {
List<String> usuarios = Arrays.asList("[email protected]", "[email protected]", "[email protected]");

// Buscar un correo en la lista
Optional<String> usuarioEncontrado = usuarios.stream()
.filter(correo -> correo.equals("[email protected]"))
.findFirst();

// Verificar si el usuario existe
if (usuarioEncontrado.isPresent()) {
System.out.println("Usuario encontrado: " + usuarioEncontrado.get());
} else {
System.out.println("Usuario no encontrado.");
}
}
}

Observa la salida:
Usuario encontrado: [email protected]

¿Qué sucedió aquí? Si el correo no existiera, el mensaje sería Usuario no encontrado.

Simplifica con ifPresent()

Una forma más avanzada de manejar valores presentes es usar el método ifPresent() junto con Optional.isPresent():

import java.util.Optional;

public class Main {
public static void main(String[] args) {
Optional<String> saludo = Optional.of("¡Hola, KeepCoding!");

saludo.ifPresent(mensaje -> System.out.println("Saludo: " + mensaje));
}
}

La salida se ve así:
Saludo: ¡Hola, KeepCoding!

Entonces, si el valor no estuviera presente, no se ejecutaría ninguna acción.

Uso combinado con map()

Algo grandioso es que también puedes transformar valores dentro de un Optional antes de verificarlos:

import java.util.Optional;

public class Main {
public static void main(String[] args) {
String nombre = "KeepCoding";

Optional<String> saludo = Optional.ofNullable(nombre)
.map(valor -> "Hola, " + valor);

saludo.ifPresent(System.out::println);
}
}

Mira cómo te queda la salida:
Hola, KeepCoding

Consejos a la hora de usar Optional.isPresent() en Java

  1. Evita abusar de isPresent(): No se trata de que lo uses siempre. Usa también métodos como ifPresent() o orElse() para lograr un código mucho más expresivo.
  2. No lo uses como reemplazo de null: Muchos comenten este grave error. Ten presente que debes usar Optional para casos específicos, no para todo.
  3. Usa map() para transformaciones: Ojo aquí, si necesitas modificar el valor dentro del Optional, lo que yo te recomiendo es que lo combines con map().

Me parece que ya te quedó bastante claro que, Optional.isPresent() en Java es un grandioso método para trabajar con datos opcionales. Ya viste con los ejemplos que te di, que te deja verificar si hay un valor disponible y así logras evitar errores comunes al acceder a datos nulos. Además, ahora tienes una base sólida para aplicarlo en tus proyectos.

¿Te imaginas lo que podrías lograr dominando Java a nivel profesional? Pues en el Bootcamp de Java Full Stack de KeepCoding, aprenderás desde los fundamentos hasta técnicas avanzadas que te prepararán para el mundo IT. ¡Apúntate ahora y da el paso hacia una carrera tecnológica de alto nivel!

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