La classe Optional
Voici un exemple d'utilisation d'Optional :
Exemple sans Optional
Exemple avec Optional
if (myObject != null) {
myObject.myMethod();
}
if (myObjectOptional.isPresent()) {
myObjectOptional.get().myMethod();
}
:fleche: Nous utilisons Optional pour vérifier la présence d'un élément facultatif (d'un élément qui peut ne pas exister) avant de l'utiliser.
Mais qu'est-ce qu'un Optional ? Vous l'avez surement déjà vu avec l'utilisation des Stream introduit dans Java 8, Optional n'est ni plus ni moins un petit utilitaire qui fait office de container, c'est un objet qui contient votre instance.
Voici quelques exemples de création d'Optional
Exemple
Description
public Optional
String returnValue = null;
// Code
return Optional.ofNullable(returnValue);
}
returnValue peut être null
public Optional
String returnValue = null;
// Code
return Optional.of(returnValue);
}
un NullPointerException sera lancé si returnValue vaut null.
public Optional
return Optional.empty();
}
Pour instancier un Optional
La classe Optional
you probably should never use it for something that returns an array of results, or a list of results; instead return an empty array or list. You should almost never use it as a field of something or a method parameter.
:fleche: N'utilisez pas optional sur votre retour de méthode si c'est un container (un tableau, une List ou Map), retournez un container vide.
:fleche: N'utilisez pas optional pour vos attributs
:fleche: N'utilisez pas optional pour vos paramètres de méthode
Chaque feature introduit dans un langage pousse généralement le développeur à l'utiliser un maximum, le risque est bien sûr d'en abuser. D'où la raison qui pousse Brian Goetz à indiquer qu'il ne faut pas utiliser Optional partout.
À noter aussi que si vous rencontrez un tel code :
if (myOptional != null) {
if (myOptional.isPresent()) {
// Code
}
}
... c'est que la personne l'ayant codé n'a rien compris à l'utilisation d'Optional.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.