Latest web development tutorials

Java 8 clases opcionales

Java 8 nuevas características Java 8 nuevas características


Clase opcional es un objeto contenedor puede ser un valor nulo. Si existe el valor del método de isPresent () devuelve verdadero, llame al método get () devuelve el objeto.

Es opcional el contenedor: puede contener valores de tipo T, o simplemente guardarlo nula. ofertas opcionales muchas maneras útiles, por lo que no llevan a cabo una detección de valor nulo explícito.

introducción facultativa de la clase una buena solución a una excepción de puntero nulo.

declaración de la clase

La siguiente es una declaraciónjava.util.Optional <T> clase:

public final class Optional<T>
extends Object

Los métodos de clase

No. Método y Descripción
1 estática <T> opcional <T> vacío ()

Volver ejemplo Opcional vacía.

2 boolean equals (Object obj)

La determinación de si otro objeto es igual opcional.

3 Opcional <T> filtro (predicado < ? Super <T> predicado)

Si existe el valor, y este valor coincide con el predicado dado, devuelve una descripción opcional para este valor, de lo contrario, devuelve un vacío opcional.

4 <U> opcional <U> flatMap (Función <? Super T, opcional <T >> mapeador)

Si existe el valor, el método de asignación de valor de retorno opcional contenida en este documento se basa, de lo contrario, devuelve un vacío opcional

5 T get ()

Si se incluye el valor de este, el valor de retorno opcional, si no se produce una excepción: NoSuchElementException

6 int hashCode ()

Devuelve el valor existe código hash, devuelve 0 si no existe el valor.

7 ifPresent vacío (Consumidor <? Super T > consumidor)

Si está valor actual se utiliza el valor para llamar a los consumidores, de lo contrario no hacer nada.

8 isPresent booleano ()

Si existe el valor método devuelve true, en caso contrario devuelve false.

9 <U> opcional <U> mapa (Función <? Super T,? Se extiende U> mapeador)

Si el valor del método de mapeo, la presencia proporcionado, si se devuelve un no nulo, devuelve un resultado Descripción opcional.

10 estática <T> opcional <T> de (valor de T)

Devuelve un valor que no sea nulo opcional especificado.

11 estática <T> opcional <T> ofNullable (valor T)

Si no nulo, devuelve el valor especificado descrito opcional, por lo demás vacío opcional.

12 T OrElse (T otra)

Si existe el valor, el valor de retorno, si no otra.

13 T orElseGet (Proveedor <? Extiende T > otra)

Si existe el valor, el valor de retorno, si no desencadenar otros, y devuelve el resultado otra llamada.

14 <X amplía Throwable> T orElseThrow ( Proveedor <? Extiende X> exceptionSupplier)

Si el valor está presente, el valor de retorno contiene otra cosa lanzada por las anomalías heredadas Proveedor

15 String toString ()

Devuelve una cadena no vacía opcional, que se utiliza para depurar

NOTA: Estos métodos son heredados de la clase java.lang.Objectllegado.


ejemplos opcionales

Podemos a través de los siguientes ejemplos para entender mejor el uso de clases opcionales:

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 - 判断值是否存在
		
      System.out.println("第一个参数值存在: " + a.isPresent());
      System.out.println("第二个参数值存在: " + b.isPresent());
		
      // Optional.orElse - 如果值存在,返回它,否则返回默认值
      Integer value1 = a.orElse(new Integer(0));
		
      //Optional.get - 获取值,值需要存在
      Integer value2 = b.get();
      return value1 + value2;
   }
}

Aplicación de la secuencia de comandos anterior, la salida es:

$ javac Java8Tester.java 
$ java Java8Tester
第一个参数值存在: false
第二个参数值存在: true
10

Java 8 nuevas características Java 8 nuevas características