Java Language Carte


Exemple

Utilisez la méthode map() de Optional pour travailler avec des valeurs pouvant être null sans effectuer de vérifications null explicites:

(Notez que les opérations map() et filter() sont évaluées immédiatement, contrairement à leurs homologues Stream qui ne sont évalués que lors d'une opération de terminal .)

Syntaxe:

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

Exemples de code:

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"

Etant donné que Optional.map () renvoie une valeur facultative vide lorsque sa fonction de mappage renvoie la valeur null, vous pouvez chaîner plusieurs opérations map () sous forme de déréférencement null-safe. Ceci est également connu sous le nom de chaînage Null-safe .

Prenons l'exemple suivant:

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

Tout ce qui getBar , getBaz et toString peut potentiellement lancer une NullPointerException .

Voici une autre manière d’obtenir la valeur de toString() utilisant Optional :

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

Cela renverra une chaîne vide si l'une des fonctions de mappage retourne null.

Voici un autre exemple, mais légèrement différent. Il imprimera la valeur uniquement si aucune des fonctions de mappage n'a renvoyé la valeur null.

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