De null a full

Programación Java

View on GitHub

Optional

La clase Optional<T> es la solución de Java para indicar referencias que podrían ser nulas a nivel de código, como alternativa a:

Se recomienda no usarlos como argumentos de métodos (p.e. print(<Optional<String>> maybe)) ni usarlos como parámetros en genéricos (p.e. List<Optional<String>> o Map<String, Optional<String>>) ya que se podrían enviar nulos de todos modos, y porque en ambos casos también se contraindica el uso de nulos.

Crear objetos Optional

¿Tengo un valor en mi Optional?

El método isPresent() retornará true si tenemos un valor en nuestro Opcional (es decir, es “no nulo”).

Desde Java 11 disponemos del método isEmpty() que retorna el valor opuesto.

Se usa el término “presente” para indicar si un Optional tiene o no valor.

Operador Elvis: map

Para transformar nuestro Optional, disponemos del método map(Function<? super T, U> mapper), que se aplica de manera un poco más verbosa pero parecida a un operador Elvis:

Optional<String> versionOptional = Optional.ofNullable(computer)
        .map(Computer::getSoundcard)
        .map(Soundcard::getUSB)
        .map(USB::getVersion);

Otras operaciones intermedias

Operaciones finales: resolver un Optional

Para recuperar el valor dentro de un Optional, tenemos varias opciones:

Ejercicios

Crea una clase que extienda a ArrayList<Integer> y, usando Optional:

Enlaces de interés