Guía de uso opcional de Java8

orientación del usuario

crear

Opcional solo tiene constructor privado. Ejemplos de métodos de creación son:

    @Test
    public void test1() {
    
    
        // 以下两个等价
        System.out.println(Optional.ofNullable(null));
        System.out.println(Optional.empty());

        // 明确是非空的采用这个
        System.out.println(Optional.of("not null"));
    }

Salida:

Opcional.evacío

Opcional.evacío

Opcional [no nulo]

Obtener directamente

@Test
public void test2() {
    
    
    Optional<String> opt = Optional.ofNullable("12345");
    System.out.println(opt.get());//12345

    Optional.empty().get();//java.util.NoSuchElementException: No value present
}

si está presente

@Test
public void test2() {
    
    
    Optional<String> opt = Optional.ofNullable("12345");
    opt.ifPresent(System.out::println); // 12345
}

o bien relacionados

@Test
public void test3() {
    
    
    Optional<String> opt = Optional.ofNullable(null);
    System.out.println(opt.orElse("hello")); // 输出hello
    System.out.println(opt.orElseGet(() -> new String("by create")));// 输出by create
}

Si existe, envíe el contenido de else directamente. ElseGet usa el método de programación funcional para retrasar la creación del objeto. Se puede usar para objetos complejos orElseGety el rendimiento será mejor.

Excepción personalizada

@Test
public void test4() {
    
    
    Optional.ofNullable(null).orElseThrow(() -> new RuntimeException("自定义异常"));// 抛出异常
}

mapa y plano

@Test
public void tes4() {
    
    
    Optional<String> opt = Optional.ofNullable("hello world");
    System.out.println(opt.flatMap(i -> Optional.ofNullable("bad"))); //Optional[bad]
    System.out.println(opt.map(i -> "bad"));//Optional[bad]
}

No hay diferencia, no es necesario encapsular el mapa.

para resumir

El patrón de diseño utilizado en Opcional es muy simple, es decir, el patrón envoltorio, que envuelve el valor y brinda una serie de soluciones para evitar punteros nulos.

Nota: la Optionalclase no está implementadaSerializable

Documentos de referencia

  1. documento oficial jdk

Supongo que te gusta

Origin blog.csdn.net/qq_38619183/article/details/112334433
Recomendado
Clasificación