Navegación segura por cadenas de llamadas "Get" propensas a nulos
En bases de código complejas, encadenar múltiples llamadas "get" puede convertirse en un caldo de cultivo para excepciones de puntero nulo. Para protegerse contra posibles valores nulos, los desarrolladores suelen recurrir a verificaciones detalladas de nulos para cada objeto intermedio.
Pero, ¿existe una manera más elegante y eficiente de manejar tales escenarios?
Cadenas opcionales
Con la clase Opcional de Java 8, tenemos una solución elegante conocida como cadenas opcionales. El ajuste opcional nos permite manejar con elegancia los valores nulos devolviendo un valor
Las cadenas opcionales le permiten ejecutar sin problemas una serie de llamadas get, asignando cada una a un valor opcional. Las comprobaciones nulas se manejan internamente, lo que garantiza que las operaciones posteriores se realicen solo si las anteriores devuelven valores no nulos.
Por ejemplo, considere la siguiente cadena de llamadas "obtener":
casa. getFloor(0).getWall(WEST).getDoor().getDoorknob();
Para evitar NullPointerExceptions, puede utilizar las siguientes comprobaciones nulas:
if (house != null && house.getFloor(0) != null && house.getFloor(0).getWall(WEST) != null && house.getFloor(0).getWall(WEST).getDoor() != null) ...
Sin embargo, usando cadenas opcionales, puedes simplificar esto a:
Optional.ofNullable(house) .map(h -> h.getFloor(0)) .map(floor -> floor.getWall(WEST)) .map(wall -> wall.getDoor()) .map(door -> door.getDoorknob());
Uso de muestra
Ilustremos el poder de las cadenas opcionales con un ejemplo:
System.out.println("----- Not Initialized! -----"); Optional.ofNullable(new Outer()) ... // Omitted chain of optional maps .ifPresent(foo -> System.out.println("foo: " foo)); //no print System.out.println("----- Let's Initialize! -----"); Optional.ofNullable(new OuterInit()) ... // Omitted chain of optional maps .ifPresent(foo -> System.out.println("foo: " foo)); //will print!
En este ejemplo, cuando se inicializan los objetos, la cadena opcional maneja correctamente los valores nulos, lo que da como resultado una impresión exitosa. Sin cadenas opcionales, se habría producido una NullPointerException.
Las cadenas opcionales no solo simplifican el manejo de valores nulos sino que también mejoran la legibilidad y el mantenimiento del código. Al aprovechar Opcional
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