Red de conocimiento informático - Material del sitio web - Cómo utilizar mejor el opcional de Java 8

Cómo utilizar mejor el opcional de Java 8

Optionallt; Tgt; en Java 8 es un objeto contenedor que puede o no contener valores no nulos. Opcional también se utiliza en muchos lugares de la API Stream.

Un punto muy molesto en Java es el punto nulo. Cuando se encuentra un puntero nulo, se producirá un error y se generará una excepción. Luego, debe verificar qué objeto es nulo línea por línea, lo que provocará una excepción. mucha pérdida de energía innecesaria y arroja un error NPE. No es un error de operación del usuario, sino un error del desarrollador, que debe evitarse. Entonces solo puede agregar una verificación no nula a cada método, que es menos legible y mantenible.

Por ejemplo, el siguiente código es una verificación manual no nula:

public void addAddressToCustomer(Cliente cliente, Dirección nuevaDirección){ if (cliente == null || nuevaDirección == null) return; if (customer.getAddresses() == null ){ customer.setAddresses (new ArrayListlt;gt;() } customer.addAddress(newAddress);}

Además, algunos desarrolladores Me gusta pasar Las comprobaciones no nulas se utilizan para implementar la lógica empresarial. Los objetos nulos no deben usarse para determinar el comportamiento del sistema. Son valores excepcionales inesperados y deben considerarse errores, no estados de lógica empresarial.

Cuando un método devuelve una colección de Lista, siempre debe devolver una Lista vacía, no Nula, lo que permite a la persona que llama recorrerla sin verificar si hay Null; de lo contrario, se generará un NPE.

Pero ¿qué pasa si consultamos la base de datos en función del ID de la clave de identificación y no podemos encontrarla, por lo que necesitamos devolver un objeto vacío? Algunas personas sugieren lanzar una excepción. De hecho, esto no se ajusta al principio de uno dentro y otro fuera de un método de función. Se convierte en un método de función con dos retornos, uno es un retorno normal y el otro es una excepción. No debemos lanzar una excepción fácilmente.

Aquí es cuando entra en juego el Opcional de Java 8, que nos permite devolver un objeto vacío.

Optionallt; Tgt; tiene métodos isPresent() y get() que se utilizan para comprobar si el objeto que contiene está vacío o no, y luego devolverlo, como por ejemplo:

Opcionallt; SomeTypegt ; someValue = someMethod();

if (someValue.isPresent()) { // comprobar

someValue.get().someOtherMethod(); call

}

Pero este uso no refleja todos los beneficios de Java 8. Puedes pensar en Opcional como una especie de intermediario o coordinador entre métodos que necesitan usar una determinada T. value , en lugar de simplemente un contenedor para un objeto normal.

Si tienes un valor de retorno tipo T y tienes un método que necesita usar este valor, entonces puedes poner Opcionallt;Tgt en el medio para asegurar que interactúen sin intervención manual.

De esta manera, el coordinador Opcionallt; Tgt; puede cuidar el valor de T proporcionado a su método como parámetro de entrada. En este caso, si T está vacío, puede garantizar que no se produzca ningún error. , de modo que en el valor de T Vacuum también permite que todo funcione normalmente, y también puedes hacer que el Tgt opcional realice otras acciones, como ejecutar un bloque de código, etc., por lo que en realidad es un buen complemento; El mecanismo del lenguaje.

El siguiente caso involucra una referencia al método de expresión Lambda, que consiste en eliminar la primera palabra que comienza con "L" en el flujo de palabras y el resultado devuelto es un Stringgt;.