"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment la classe facultative de Java 8 peut-elle simplifier les getters de chaînage et éviter les exceptions NullPointerException ?

Comment la classe facultative de Java 8 peut-elle simplifier les getters de chaînage et éviter les exceptions NullPointerException ?

Publié le 2024-11-08
Parcourir:311

How Can Java 8\'s Optional Class Simplify Chaining Getters and Avoid NullPointerExceptions?

Chaînage des getters et gestion des exceptions NullPointerExceptions

Lors de l'exécution d'une chaîne d'appels de getter pour récupérer des données à partir d'objets imbriqués, il est nécessaire d'effectuer des vérifications nulles pour éviter les NullPointerExceptions. Cela peut rapidement devenir verbeux et disgracieux lorsqu'il s'agit de plusieurs niveaux d'objets.

Imbrication des instructions If

Une approche courante consiste à imbriquer les instructions if, en vérifiant chaque objet dans le chaîne pour null avant de continuer. Cependant, cette méthode peut devenir lourde et difficile à maintenir.

Rompre la loi de Déméter (LoD)

Cette approche viole la loi de Déméter (LoD). , qui stipule que les méthodes ne doivent appeler d'autres méthodes que sur les objets auxquels elles font directement référence. En accédant aux objets au-delà de leur contexte immédiat, cette méthode viole l'encapsulation des classes impliquées.

Utilisation de Facultatif (Java 8)

Heureusement, Java 8 a introduit la classe Facultative , qui fournit un moyen plus élégant et plus sûr de gérer les valeurs nulles dans les chaînes de getters. Facultatif représente une valeur éventuellement nulle et fournit des méthodes pour mapper et filtrer la valeur qu'elle contient. Facultatif.ofNullable() sur le premier objet de la chaîne. Cela crée un objet facultatif qui représente la valeur ou null. Vous pouvez ensuite enchaîner les opérations map() pour appliquer des appels getter à la valeur, et Optionnel gérera automatiquement les vérifications nulles.

Optional doorknob = Optionnel.ofNullable(house) .map(maison -> maison.getFloor(0)) .map(floorZero -> floorZero.getWall(OUEST)) .map(wallWest -> wallWest.getDoor()) .map(door -> door.getDoorknob());

Sécurité et encapsulation

Optional doorknob = Optional.ofNullable(house)
        .map(house -> house.getFloor(0))
        .map(floorZero -> floorZero.getWall(WEST))
        .map(wallWest -> wallWest.getDoor())
        .map(door -> door.getDoorknob());

Conclusion

Bien qu'il puisse parfois être nécessaire de violer la LoD, il est généralement recommandé d'éviter une imbrication excessive des instructions if lors de l'enchaînement des getters. Au lieu de cela, envisagez d'utiliser la classe Optionnel pour gérer les valeurs nulles de manière plus élégante et plus sûre.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3