Aller au contenu

Optional : C’est quoi ?

Optional est une classe introduite dans Java 8 qui permet de gérer les valeurs qui peuvent être null.

Plutôt que de renvoyer directement une valeur qui peut être null, vous pouvez la mettre dans un objet de type Optional qui vous permettra de mieux gérer les cas où cette valeur est absente.

Exemple

// Création d'un objet Optional contenant une chaîne de caractères
Optional<String> optionalString = Optional.of("Salut, toi !");

// Vérification si l'objet Optional contient une valeur
if (optionalString.isPresent()) {
    System.out.println("La chaîne de caractères est présente : " + optionalString.get());
} else {
    System.out.println("La chaîne de caractères est absente.");
}

Dans cet exemple, nous avons créé un objet Optional contenant une chaîne de caractères “Salut, toi !”.

Nous avons ensuite vérifié si cet objet contient une valeur en utilisant la méthode isPresent(). Si l’objet contient une valeur, nous avons imprimé cette valeur en utilisant la méthode get(). Si l’objet ne contient pas de valeur, nous avons imprimé un message indiquant que la chaîne de caractères est absente.

Voici maintenant quelques-unes des méthodes utiles de la classe Optional :

Voici un exemple avec la méthode orElse() :

// Création d'un objet Optional vide
Optional<String> optionalString = Optional.empty();

// Récupération de la valeur contenue dans l'objet Optional, avec une valeur par défaut
String value = optionalString.orElse("Valeur par défaut");

// Affichage de la valeur
System.out.println(value); // Affiche "Valeur par défaut"

Voici un exemple avec orElseThrow() :

Cette méthode est utilisée pour renvoyer la valeur contenue dans un objet Optional, s’il y en a une, ou pour lancer une exception si l’objet Optional est vide.

// Création d'un objet Optional vide
Optional<String> optionalString = Optional.empty();

try {
    // Tentative de récupération de la valeur contenue dans l'objet Optional
    String value = optionalString.orElseThrow(() -> new Exception("L'objet Optional est vide"));
    System.out.println("La valeur est : " + value);
} catch (Exception e) {
    System.out.println("Une exception a été lancée : " + e.getMessage());
}

Ici, nous avons créé un objet Optional vide et ensuite nous avons tenté de récupérer la valeur contenue dans cet objet Optional en utilisant notre méthode orElseThrow(). Cette méthode prend en paramètre une fonction qui renvoie l’exception à lancer si l’objet Optional est vide.

Dans l’exemple, nous avons lancé une exception avec un message personnalisé “L’objet Optional est vide”.

Si l’objet Optional contient une valeur, cette valeur sera renvoyée et stockée dans la variable value, qui sera ensuite affichée. Si l’objet Optional est vide, une exception sera lancée, qui sera capturée par le bloc catch et affichée. Vous pouvez utilisez n’importe quel type d’Exception !

Conclusion

Testez les différentes méthode de cette classe bien pratique !