Optional

La classe Optional est présente depuis Java 8. Il s’agit d’un conteneur qui contient ou non une valeur de n’importe quel type.

Imaginons le cas suivant. Un ordinateur a une carte son. Cette carte est présente dans la plupart des cas, mais pas forcément tout le temps.

Une modélisation possible de cette caractéristique est de créer un membre de classe, qui vaut null quand il n’y a pas de carte et a une valeur quand la carte son est présente.

Cela impose de vérifier constamment dans le code la valeur du membre, car si le code effectue une opération comme :


laCarte.getVolume().augmenter();
 

dans le cas d’une carte absente, il y aura une erreur NullPointerException lors de l’exécution.

Une manière de protéger le code est de le modifier ainsi :


if (laCarte!= null) { 
    Volume volume = laCarte.getVolume(); 
    if (volume!= null) { 
        volumer.augmenter(); 
    } 
}
 

C’est possible, mais fastidieux...

La classe Optional permet de résoudre plus élégamment ce souci :


Optional.ofNullable(laCarte) 
    .map(carte -> carte.getVolume()) 
    .ifPresent(volume -> volume.augmenter())
 

Ce code crée un Optional à partir d’une carte potentiellement absente, transforme cette carte en Volume uniquement si elle est présente, et augmente le volume uniquement si celui-ci est présent.

couv_9JAV.png

Découvrez 

le livre :

Aussi inclus dans nos :

Précédent
Streams
Suivant
Classes graphiques