Clase Optional de Java 8
Nuevas características de Java 8
La clase Optional es un objeto contenedor que puede ser null. Si el valor existe, el método isPresent() devuelve true, y al llamar al método get() devolverá ese objeto.
Optional es un contenedor: puede contener un valor de tipo T, o simplemente null. Optional proporciona muchos métodos útiles, de modo que no necesitamos realizar la detección de valores nulos explícitamente.
La introducción de la clase Optional resuelve muy bien la excepción de puntero nulo.
Declaración de clase
Lo siguiente es unajava.util.Optional<T>declaración de clase:
Métodos de clase
| N.º | Método y descripción |
|---|---|
| 1 | static <T> Optional<T> empty()
Devuelve una instancia de Optional vacía. |
| 2 | boolean equals(Object obj)
Determina si otro objeto es igual a este Optional. |
| 3 | Optional<T> filter(Predicate<? super <T> predicate)
Si el valor existe y coincide con el predicado dado, devuelve un Optional que describe este valor; de lo contrario, devuelve un Optional vacío. |
| 4 | <U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper)
Si el valor existe, devuelve el valor basado en el método de mapeo contenido en el Optional; de lo contrario, devuelve un Optional vacío. |
| 5 | T get()
Si este Optional contiene el valor, devuelve el valor; de lo contrario, lanza la excepción: NoSuchElementException |
| 6 | int hashCode()
Devuelve el código hash del valor presente; si el valor no existe, devuelve 0. |
| 7 | void ifPresent(Consumer<? super T> consumer)
Si el valor existe, invoca al consumer con ese valor; de lo contrario, no hace nada. |
| 8 | boolean isPresent()
Si el valor existe, el método devuelve true; de lo contrario, devuelve false. |
| 9 | <U>Optional<U> map(Function<? super T,? extends U> mapper)
Si hay un valor, se le aplica la función de mapeo para obtener un valor de retorno. Si el valor de retorno no es null, crea un Optional que contiene el valor de retorno del mapeo como resultado del método map; de lo contrario, devuelve un Optional vacío. |
| 10 | static <T> Optional<T> of(T value)
Devuelve un Optional con el valor no nulo especificado. |
| 11 | static <T> Optional<T> ofNullable(T value)
Si no es nulo, devuelve un Optional que describe el valor especificado; de lo contrario, devuelve un Optional vacío. |
| 12 | T orElse(T other)
Si el valor existe, devuelve el valor; de lo contrario, devuelve other. |
| 13 | T orElseGet(Supplier<? extends T> other)
Si el valor existe, devuelve el valor; de lo contrario, invoca a other y devuelve el resultado de la llamada a other. |
| 14 | <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier)
Si el valor existe, devuelve el valor contenido; de lo contrario, lanza la excepción proporcionada por el Supplier. |
| 15 | String toString()
Devuelve una representación de cadena no vacía del Optional, para depuración. |
Nota:Estos métodos sonjava.lang.Objectheredados de la clase.
Instancia de Optional
Podemos comprender mejor el uso de la clase Optional mediante el siguiente ejemplo:
Archivo Java8Tester.java
Al ejecutar el script anterior, la salida es:
$ javac Java8Tester.java $ java Java8Tester 第一个参数值存在: false 第二个参数值存在: true 10
Otras extensiones