Navegación segura por cadenas de llamadas "Get" con opciones opcionales
En la programación Java, es común encontrar cadenas de llamadas "get", como el siguiente:
house.getFloor(0).getWall(WEST).getDoor().getDoorknob();
Para evitar posibles NullPointerExceptions, los desarrolladores suelen recurrir a comprobaciones nulas detalladas:
if (house != null &&& house.getFloor(0) &&& house.getFloor(0).getWall(WEST) != null &&& house.getFloor(0).getWall(WEST).getDoor() != null) ...
Este enfoque se vuelve aún más difícil de manejar con cadenas de llamadas más largas. ¿Existe una solución más elegante?
Sí, con la introducción del tipo Opcional en Java 8, el manejo de valores nulos en cadenas de get se ha vuelto significativamente más fácil.
Uso de Opcional para el manejo de nulos
Opcional es una clase contenedora que representa un valor opcional. Puede contener un valor no nulo o estar vacío.
Para usar Opcional para el manejo de nulos en cadenas de get, podemos utilizar sus capacidades de encadenamiento con el método map().
Considere el siguiente ejemplo:
Optional.ofNullable(house) .map(house -> house.getFloor(0)) .map(floorZero -> floorZero.getWall(WEST)) .map(wallWest -> wallWest.getDoor()) .map(door -> wallWest.getDoor());
Este código crea una cadena de objetos opcionales, cada uno de los cuales representa el resultado de la llamada get correspondiente.
Beneficios del uso Opcional
El uso de Opcional ofrece varios beneficios:
Si no puedes evitar infringir la Ley de Demeter, usar Opcional es un enfoque muy recomendado para navegar de forma segura en cadenas de "obtener". " llamadas. Proporciona una forma elegante y eficiente de manejar valores nulos, garantizando la solidez y confiabilidad de su código.
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