"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 > ## ¿Son las cadenas opcionales la clave para eliminar las excepciones NullPointerExceptions en llamadas \"Get\" encadenadas?

## ¿Son las cadenas opcionales la clave para eliminar las excepciones NullPointerExceptions en llamadas \"Get\" encadenadas?

Publicado el 2024-11-15
Navegar:190

## Are Optional Chains the Key to Eliminating NullPointerExceptions in Chained \

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 opcional en lugar de una T sin formato.

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, puedes navegar de forma segura en cadenas de llamadas "obtener", reduciendo la carga de comprobaciones nulas explícitas y mejorando la solidez general de tu código base.

Ú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