Java 9 Clase Optional mejorada
Nuevas características de Java 9
La clase Optional se introdujo en Java 8. La introducción de la clase Optional resolvió muy bien el problema de la excepción de puntero nulo. En Java 9, se agregaron tres métodos para mejorar su funcionalidad:
- stream()
- ifPresentOrElse()
- or()
Método stream()
Sintaxis
public Stream<T> stream()
El método stream convierte un Optional en un Stream. Si el Optional contiene un valor, devuelve un Stream que contiene ese valor; de lo contrario, devuelve un Stream vacío (Stream.empty()).
Ejemplo
El resultado de la ejecución es:
[A, B] [A, B]
Método ifPresentOrElse()
Sintaxis
public void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction)
La mejora del método ifPresentOrElse es que ahora tiene else; acepta dos parámetros: Consumer y Runnable.
El propósito del método ifPresentOrElse es: si un Optional contiene un valor, llama a la función action sobre el valor contenido, es decir, action.accept(value), lo cual coincide con ifPresent; la diferencia con el método ifPresent es que ifPresentOrElse tiene un segundo parámetro emptyAction — si el Optional no contiene un valor, entonces ifPresentOrElse llama a emptyAction, es decir, emptyAction.run().
Ejemplo
El resultado de la ejecución es:
Value: 1 Not Present.
Método or()
Sintaxis
public Optional<T> or(Supplier<? extends Optional<? extends T>> supplier)
Si el valor está presente, devuelve el valor especificado por Optional; de lo contrario, devuelve un valor preestablecido.
Ejemplo
El resultado de la ejecución es:
Value: Mahesh Value: Not Present