Encadenamiento de captadores y manejo de excepciones de puntero nulo
Al realizar una cadena de llamadas de captadores para recuperar datos de objetos anidados, es necesario realizar comprobaciones nulas para evitar NullPointerExceptions. Esto puede volverse rápidamente detallado y desgarbado cuando se trata de múltiples niveles de objetos.
Anidación de declaraciones If
Un enfoque común es anidar declaraciones if, verificando cada objeto en el cadena para null antes de continuar. Sin embargo, este método puede volverse difícil de manejar y de mantener.
Romper la Ley de Demeter (LoD)
Este enfoque viola la Ley de Demeter (LoD) , que establece que los métodos solo deben llamar a otros métodos en objetos a los que hacen referencia directamente. Al acceder a objetos más allá de su contexto inmediato, este método viola la encapsulación de las clases involucradas.
Uso de Opcional (Java 8)
Afortunadamente, Java 8 introdujo la clase Opcional , que proporciona una forma más elegante y segura de manejar valores nulos en cadenas de captadores. Opcional representa un valor posiblemente nulo y proporciona métodos para mapear y filtrar el valor que contiene.
Encadene captadores con Opcional.ofNullable
Para encadenar captadores usando Opcional, simplemente llame Opcional.ofNullable() en el primer objeto de la cadena. Esto crea un objeto opcional que representa el valor o nulo. Luego puede encadenar operaciones de map() para aplicar llamadas getter al valor, y Opcional manejará las comprobaciones nulas automáticamente.
Optional doorknob = Optional.ofNullable(house)
.map(house -> house.getFloor(0))
.map(floorZero -> floorZero.getWall(WEST))
.map(wallWest -> wallWest.getDoor())
.map(door -> door.getDoorknob());
Seguridad y encapsulación
Este enfoque no solo simplifica el código, sino que también garantiza la seguridad de tipos. La clase Opcional generará una excepción si intenta acceder al valor que representa sin verificar primero si es nulo. Además, mantiene la encapsulación de las clases involucradas, ya que solo accede a los métodos directamente en los objetos a los que hace referencia.
Conclusión
Si bien ocasionalmente puede ser necesario viola el LoD, generalmente se recomienda evitar el anidamiento excesivo de declaraciones if al encadenar captadores. En su lugar, considere usar la clase Opcional para manejar valores nulos de una manera más elegante y segura.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3