Sommaire
Sommaire
<<

Java Notions : Optional  il y a 10 mois

Auteur

Hachim IDRISSI YASSINE, de ProfLibre.

Série

Java Notions

Description

Java Notions : Optional, ofNullable, get, orElse.

Tags

Introduction

L'exception non vérifiée (au moment de la compilation) NullPointerException est l'une des exceptions qui peuvent nuire aux développeurs au moment d'exécution (Runtime) d'un programme

Java à cause d'un manque ou oubli d'initialisation d'un objet. Pour y remédier, un contrôle est rajouté à chaque fois pour vérifier si l'objet

est null ou pas.

Exemple avec l'opérateur ternaire :

(sobj != null) ? sobj : "";

La classe Optional

Java 8 a mis en place une fonctionnalité dédiée, il s'agit de la classe Optional qui offre une multitude de méthodes afin de gérer la nullité d'un objet

et éviter au maximum de tomber dans cette fameuse Exception NullPointerException.

En effet, un objet Optional peut être vide ou pas.

La classe Optional appartient au package java.util.

Lien JavaDoc :

https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html

Aujourd'hui, nous allons voir quelques méthodes utiles de cette classe avec des cas pratiques pour mieux comprendre.

La méthode Optional.ofNullable()

La méthode Optional.ofNullable() permet de créer un objet Optional qui peut contenir une valeur ou qu'il soit null (vide),

ceci évite le programme de tomber dans l'exception NullPointerException.

Syntaxe :

Optional<String> optionalValeur = Optional.ofNullable(uneValeur);

La méthode get() : déconseillée

La méthode get() permet simplement d'afficher la valeur contenue dans l'objet Optional,

avec un risque de déclencher l'exception NoSuchElementException si l'objet Optional est vide.

Syntaxe :

String resultat = optionalString.get();

La méthode orElse() : recommandée

La méthode orElse() retourne la valeur de l'objet Optional, qu'elle soit la valeur qu'il encapsulee ou une valeur par défaut que cette méthode prend en paramètre.

Syntaxe :

String resultat = optionalString.orElse("Valeur_Par_Defaut");

Exemple :

Optional<String> optionalValeur = Optional.ofNullable(uneValeur).orElse("Valeur_Par_Defaut");

Exemple

La classe Pojo "Personne.java" :

import java.util.Optional;

public class Personne {

    public Personne() {
    }

    public Personne(String nom, String prenom, String ville) {
        this.nom = nom;
        this.prenom = prenom;
        this.ville = ville;
    }

    private String nom;
    private String prenom;
    private String ville;

    public String getNom() {
        return nom != null ? nom : "Nom_Par_Defaut";
    }

    public void setNom(String nom) {
        this.nom = nom;
    }

    public Optional<String> getPrenom() {
        return Optional.ofNullable(prenom);
    }

    public void setPrenom(String prenom) {
        this.prenom = prenom;
    }

    public String getVille() {
        return Optional.ofNullable(ville).orElse("Ville_Par_Defaut");
    }

    public void setVille(String ville) {
        this.ville = ville;
    }
}

La classe Main.java :

//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
import java.util.Optional;

public class Main {
    public static void main(String[] args) {
        Personne p = new Personne();

        System.out.println("Taille Nom : " + p.getNom().length());
        System.out.println("Taille Prenom : " + p.getPrenom().orElse("Prenom_Par_Defaut").length());
        System.out.println("Taille Ville : " + p.getVille().length());
    }
}

Conclusion

Quelques conseils et bonnes pratiques :

1- Pensez toujours à initialiser vos objets en Java.

2- N'utilisez pas Optional quand vous êtes sûr que l'objet ne sera jamais null, car à force de l'utiliser fréquemment dans le code, cela peut impacter la performance.

3- Préférez Optional dans les méthodes (pas en tant que paramètre) que dans les attributs de classe.

4- Préférez orElse() à get().

5- Utilisez ofNullable avec orElse, cela permet à la fois d'éviter l'exception NullPointerException et en même temps d'initialiser l'objet avec une valeur par défaut s'il est null.

 

Prise de notes

Vous seul vous pouvez voir vos notes.

Mes notes

Commentaires

 il y a 10 mois
Hachim IDRISSI YASSINE [L'auteur] : Bonjour,
N'hésitez pas de poser vos questions ou laisser des commentaires.
Merci.
Bien cordialement.
 il y a 10 mois
Hachim IDRISSI YASSINE [L'auteur] : Je précise que le switch ne vérifie pas les objets null que si on passe par l'opérateur ternaire qui pourrait être utilisé dans le switch (sobj !=null ? sobj : "valeur Recherchée").

Bien cordialement.

Formations similaires

Etes-vous intéressé par nos dernières formations ?

back to top
contactez-nous
Fermer