Classe Optional améliorée de Java 9
La classe Optional a été introduite dans Java 8. L'introduction de la classe Optional résout efficacement l'exception de pointeur null. Dans Java 9, trois méthodes ont été ajoutées pour améliorer ses fonctionnalités :
- stream()
- ifPresentOrElse()
- or()
méthode stream()
Syntaxe
public Stream<T> stream()
La méthode stream convertit un Optional en un Stream. Si l'Optional contient une valeur, elle renvoie un Stream contenant cette valeur ; sinon, elle renvoie un Stream vide (Stream.empty()).
Exemple
Le résultat de sortie de l'exécution est :
[A, B] [A, B]
ifPresentOrElse()
Syntaxe
public void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction)
L'amélioration apportée par ifPresentOrElse est qu'il possède un else, acceptant deux paramètres : Consumer et Runnable.
Le but de la méthode ifPresentOrElse est : si un Optional contient une valeur, la fonction est appelée sur la valeur contenue, c'est-à-dire action.accept, ce qui est cohérent avec ifPresent ; la différence avec la méthode ifPresent est que ifPresentOrElse possède aussi une emptyAction — si l'Optional ne contient pas de valeur, ifPresentOrElse appelle emptyAction, c'est-à-dire emptyAction.run().
Exemple
Le résultat de sortie de l'exécution est :
Value: 1 Not Present.
méthode or()
Syntaxe
public Optional<T> or(Supplier<? extends Optional<? extends T>> supplier)
Si une valeur existe, retourne la valeur spécifiée par Optional ; sinon, retourne une valeur prédéfinie.
Exemple
Le résultat de sortie de l'exécution est :
Value: Mahesh Value: Not Present
Nouveautés de Java 9