ejemplo baeldung java java-8 nullpointerexception null optional

java - baeldung - ¿Por qué usar Opcional.of sobre Opcional.ofNullable?



optional java ejemplo (4)

Además, si sabe que su código no debería funcionar si el objeto es nulo, puede lanzar una excepción utilizando Optional.orElseThrow

String nullName = null; String name = Optional.ofNullable(nullName).orElseThrow(NullPointerException::new);

@ , corrígelo si me equivoco.

Cuando se usa la clase Java 8 Optional , hay dos formas en que un valor se puede ajustar en un opcional.

String foobar = <value or null>; Optional.of(foobar); // May throw NullPointerException Optional.ofNullable(foobar); // Safe from NullPointerException

Entiendo que Optional.ofNullable es la única forma segura de usar Optional , pero ¿por qué existe Optional.of ? ¿Por qué no solo usar Optional.ofNullable y estar seguro en todo momento?


Esto depende de los escenarios.

Digamos que tiene alguna funcionalidad comercial y necesita procesar algo con ese valor aún más, pero tener un valor null en el momento del procesamiento lo afectaría.

Luego, en ese caso, puede usar Optional<?> .

String nullName = null; String name = Optional.ofNullable(nullName) .map(<doSomething>) .orElse("Default value in case of null");


Opcional debería usarse principalmente para resultados de Servicios de todos modos. En el servicio, sabe lo que tiene a mano y devuelve Opcional.of (someValue) si tiene un resultado y devuelve Opcional.empty () si no lo tiene. En este caso, algún valor nunca debe ser nulo y aún así, devuelve un Opcional.


Su pregunta se basa en la suposición de que el código que puede arrojar NullPointerException es peor que el código que no puede. Esta suposición está mal. Si espera que su foobar nunca sea nulo debido a la lógica del programa, es mucho mejor usar Optional.of(foobar) ya que verá una NullPointerException que indicará que su programa tiene un error. Si usa Optional.ofNullable(foobar) y el foobar es null debido al error, entonces su programa continuará funcionando incorrectamente en silencio, lo que puede ser un desastre mayor. De esta manera, un error puede ocurrir mucho más tarde y sería mucho más difícil de entender en qué momento salió mal.