Java Language Mapa


Ejemplo

Use el método map() de Optional para trabajar con valores que podrían ser null sin hacer verificaciones null explícitas:

(Tenga en cuenta que las operaciones map() y filter() se evalúan inmediatamente, a diferencia de sus contrapartes de Stream que solo se evalúan en una operación de terminal ).

Sintaxis:

public <U> Optional<U> map(Function<? super T,? extends U> mapper)

Ejemplos de código:

String value = null;

return Optional.ofNullable(value).map(String::toUpperCase).orElse("NONE");
// returns "NONE"
String value = "something";

return Optional.ofNullable(value).map(String::toUpperCase).orElse("NONE");
// returns "SOMETHING"

Dado que Optional.map () devuelve un opcional vacío cuando su función de asignación devuelve un valor nulo, puede encadenar varias operaciones map () como una forma de desreferenciación segura de nulos. Esto también se conoce como encadenamiento Null-safe .

Considere el siguiente ejemplo:

String value = foo.getBar().getBaz().toString();

Cualquiera de getBar , getBaz y toString puede lanzar una NullPointerException .

Aquí hay una forma alternativa de obtener el valor de toString() usando Optional :

String value = Optional.ofNullable(foo)
                       .map(Foo::getBar)
                       .map(Bar::getBaz)
                       .map(Baz::toString)
                       .orElse("");

Esto devolverá una cadena vacía si alguna de las funciones de mapeo devuelve un valor nulo.

A continuación se muestra otro ejemplo, pero ligeramente diferente. Imprimirá el valor solo si ninguna de las funciones de asignación devolvió un valor nulo.

Optional.ofNullable(foo)
        .map(Foo::getBar)
        .map(Bar::getBaz)
        .map(Baz::toString)
        .ifPresent(System.out::println);