English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La clase Optional es un objeto contenedor que puede ser null. Si el valor existe, el método isPresent() devuelve true, y el método get() devuelve el objeto.
Optional es un contenedor: puede almacenar valores de tipo T o simplemente almacenar null. Optional proporciona muchos métodos útiles, de modo que no sea necesario realizar una detección explícita de valores nulos.
La introducción de la clase Optional se resolvió muy bien la excepción de elemento no encontrado.
A continuación se muestra un java.util.Optional<T> Declaración de la clase:
public final class Optional<T> extiende Object
Número de orden | Método & Descripción |
---|---|
1 | static <T> Optional<T> empty() Devuelve una instancia de Optional vacío. |
2 | boolean equals(Object obj) Determina si otro objeto es igual a Optional. |
3 | Optional<T> filter(Predicate<? super <T> predicate) Si el valor existe y coincide con el predicate 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 un Optional basado en el valor del método de mapeo contenido en Optional, de lo contrario devuelve un Optional vacío. |
5 | T get() Si este valor está contenido en este Optional, devuelve el valor, de lo contrario lanza una excepción: NoSuchElementException |
6 | int hashCode() Devuelve el código de hash del valor existente, si el valor no existe devuelve 0. |
7 | void ifPresent(Consumer<? super T> consumer) Si el valor existe, se llama al consumer con ese valor, de lo contrario no se 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 ejecuta la función de mapeo y se obtiene el valor de retorno. Si el valor de retorno no es null, se crea un Optional que contiene el valor de retorno del mapeo como valor de retorno del método map, de lo contrario se devuelve un Optional vacío. |
10 | static <T> Optional<T> of(T value) 返回一个指定非null值的Optional。 |
11 | static <T> Optional<T> ofNullable(T value) 如果为非空,返回 Optional 描述的指定值,否则返回空的 Optional。 |
12 | T orElse(T other) 如果存在该值,返回值, 否则返回 other。 |
13 | T orElseGet(Supplier<? extends T> other) 如果存在该值,返回值, 否则触发 other,并返回 other 调用的结果。 |
14 | <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) 如果存在该值,返回包含的值,否则抛出由 Supplier 继承的异常 |
15 | String toString() 返回一个Optional的非空字符串,用来调试 |
注意: 这些方法是从 java.lang.Object 类继承来的。
我们可以通过以下示例来更好地了解 Optional 类的使用:
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 - 允许传递为 null 参数 Optional<Integer> a = Optional.ofNullable(value1); // Optional.of - 如果传递的参数是 null,抛出异常 NullPointerException Optional<Integer> b = Optional.of(value2); System.out.println(java8Tester.sum(a, b)); } public Integer sum(Optional<Integer> a, Optional<Integer> b){ // Optional.isPresent - Determinar si el valor existe System.out.println("El valor del primer parámetro existe: " + a.isPresent()); System.out.println("El valor del segundo parámetro existe: " + b.isPresent()); // Optional.orElse - Si el valor existe, devuélvelo, de lo contrario, devuelve el valor predeterminado Integer value1 = a.orElse(new Integer(0)); //Optional.get - Obtener el valor, el valor debe existir Integer value2 = b.get(); return value1 + value2; } }
Ejecutar el siguiente script, el resultado de salida será:
$ javac Java8Tester.java $ java Java8Tester El valor del primer parámetro existe: false El valor del segundo parámetro existe: true 10