Optionals usage

April 4, 2018
java Optionals

Con Java 8 podemos usar los opcionales (Optionals) para evitar en cierta medida (si se usan bien) los NullPointerException.

En este caso por ejemplo, una llamada que puede devolver null se encapsula en el opcional:

 if (hashOps.hasKey("calculatedAt",date)) {
    return Optional.of((String) hashOps.get("calculatedAt",date));
 } 
 else {
    return Optional.empty();
 }

Aunque es correcto en realidad el uso del opcional en realidad lo que quiere es, no tanto evitar la excepción(*) sino mejorar la legibilidad del código y hacerlo más claro así que es mucho mejor así:

return Optional.ofNullable((String) hashOps.get("calculatedAt",date));

Si el elemento es nulo el opcional envuelve un elemento vacio.

(*) también, pero digo no tanto porque si no usas bien el opcional tendrás en lugar del NPE un NoSuchElement)