Maison >Java >javaDidacticiel >Comment le type facultatif de Java peut-il simplifier la gestion des valeurs nulles dans les chaînes d'appels « Get » ?
Naviguer en toute sécurité dans les chaînes d'appels "Get" avec facultatif
Dans la programmation Java, il est courant de rencontrer des chaînes d'appels "get", comme ce qui suit :
house.getFloor(0).getWall(WEST).getDoor().getDoorknob();
Pour éviter les NullPointerExceptions potentielles, les développeurs ont souvent recours à des vérifications nulles verbeuses :
if (house != null &&& house.getFloor(0) &&& house.getFloor(0).getWall(WEST) != null &&& house.getFloor(0).getWall(WEST).getDoor() != null) ...
Cette approche devient encore plus lourde avec des chaînes d'appels plus longues. Existe-t-il une solution plus élégante ?
Oui, avec l'introduction du type facultatif dans Java 8, la gestion des valeurs nulles dans les chaînes d'obtentions est devenue beaucoup plus facile.
Utilisation d'Optionnel pour la gestion des valeurs nulles
Utilisation d'Optionnel pour la gestion des valeurs nullesOptional est une classe wrapper qui représente une valeur facultative. Il peut contenir une valeur non nulle ou être vide.
Pour utiliser Facultatif pour la gestion des valeurs nulles dans les chaînes d'obtentions, nous pouvons utiliser ses capacités de chaînage avec la méthode map().
Optional.ofNullable(house) .map(house -> house.getFloor(0)) .map(floorZero -> floorZero.getWall(WEST)) .map(wallWest -> wallWest.getDoor()) .map(door -> wallWest.getDoor());Considérez l'exemple suivant :
Ce code crée une chaîne d'objets facultatifs, chacun représentant le résultat de l'appel get correspondant.
Avantages de l'utilisation de facultatifConclusionSi vous ne parvenez pas à éviter d'enfreindre la loi de Déméter, l'utilisation de Facultatif est une approche fortement recommandée pour naviguer en toute sécurité dans les chaînes d'appels « get ». Il fournit un moyen élégant et efficace de gérer les valeurs nulles, garantissant la robustesse et la fiabilité de votre code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!