Java 8 - Clase opcional
Opcional es un objeto contenedor que se utiliza para contener objetos no nulos. El objeto opcional se usa para representar nulo con valor ausente. Esta clase tiene varios métodos de utilidad para facilitar que el código maneje valores como 'disponibles' o 'no disponibles' en lugar de verificar valores nulos. Se introduce en Java 8 y es similar a lo que es Opcional en Guava.
Declaración de clase
A continuación se muestra la declaración de java.util.Optional<T> clase -
public final class Optional<T> extends Object
Método de clase
No Señor. | Método y descripción |
---|---|
1 | static <T> Optional<T> empty() Devuelve una instancia opcional vacía. |
2 | boolean equals(Object obj) Indica si algún otro objeto es "igual a" este Opcional. |
3 | Optional<T> filter(Predicate<? super <T> predicate) Si un valor está presente y el valor coincide con un predicado dado, devuelve un Opcional que describe el valor; de lo contrario, devuelve un Opcional vacío. |
4 | <U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper) Si un valor está presente, le aplica la función de mapeo de cojinete opcional proporcionado, devuelve ese resultado, de lo contrario devuelve un opcional vacío. |
5 | T get() Si hay un valor presente en este Opcional, devuelve el valor; de lo contrario, arroja NoSuchElementException. |
6 | int hashCode() Devuelve el valor del código hash del valor actual, si lo hay, o 0 (cero) si no hay ningún valor presente. |
7 | void ifPresent(Consumer<? super T> consumer) Si un valor está presente, invoca al consumidor especificado con el valor; de lo contrario, no hace nada. |
8 | boolean isPresent() Devuelve verdadero si hay un valor presente; de lo contrario, es falso. |
9 | <U>Optional<U> map(Function<? super T,? extends U> mapper) Si un valor está presente, le aplica la función de mapeo proporcionada y, si el resultado no es nulo, devuelve un Opcional que describe el resultado. |
10 | static <T> Optional<T> of(T value) Devuelve un Opcional con el valor actual no nulo especificado. |
11 | static <T> Optional<T> ofNullable(T value) Devuelve un Opcional que describe el valor especificado, si no es nulo; de lo contrario, devuelve un Opcional vacío. |
12 | T orElse(T other) Devuelve el valor si está presente; de lo contrario, devuelve otro. |
13 | T orElseGet(Supplier<? extends T> other) Devuelve el valor si está presente; de lo contrario, invoca a otro y devuelve el resultado de esa invocación. |
14 | <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) Devuelve el valor contenido, si está presente; de lo contrario, genera una excepción que debe crear el proveedor proporcionado. |
15 | String toString() Devuelve una representación de cadena no vacía de este Opcional adecuado para la depuración. |
Esta clase hereda métodos de la siguiente clase:
- java.lang.Object
Ejemplo opcional
Cree el siguiente programa Java usando cualquier editor de su elección en, digamos, C: \> JAVA.
Java8Tester.java
import java.util.Optional;
public class Java8Tester {
public static void main(String args[]) {
Java8Tester java8Tester = new Java8Tester();
Integer value1 = null;
Integer value2 = new Integer(10);
//Optional.ofNullable - allows passed parameter to be null.
Optional<Integer> a = Optional.ofNullable(value1);
//Optional.of - throws NullPointerException if passed parameter is null
Optional<Integer> b = Optional.of(value2);
System.out.println(java8Tester.sum(a,b));
}
public Integer sum(Optional<Integer> a, Optional<Integer> b) {
//Optional.isPresent - checks the value is present or not
System.out.println("First parameter is present: " + a.isPresent());
System.out.println("Second parameter is present: " + b.isPresent());
//Optional.orElse - returns the value if present otherwise returns
//the default value passed.
Integer value1 = a.orElse(new Integer(0));
//Optional.get - gets the value, value should be present
Integer value2 = b.get();
return value1 + value2;
}
}
Verificar el resultado
Compila la clase usando javac compilador de la siguiente manera:
C:\JAVA>javac Java8Tester.java
Ahora ejecute Java8Tester de la siguiente manera:
C:\JAVA>java Java8Tester
Debería producir el siguiente resultado:
First parameter is present: false
Second parameter is present: true
10