"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puede la clase opcional de Java 8 simplificar el encadenamiento de captadores y evitar las excepciones NullPointerExceptions?

¿Cómo puede la clase opcional de Java 8 simplificar el encadenamiento de captadores y evitar las excepciones NullPointerExceptions?

Publicado el 2024-11-08
Navegar:467

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

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.

Último tutorial Más>

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