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
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.
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