Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Java 9 - Mejoras de clase opcionales

La clase opcional se introdujo en Java 8 para evitar comprobaciones nulas y problemas de NullPointerException. En java 9, se agregan tres nuevos métodos para mejorar su funcionalidad.

método flujo()

Sintaxis

public Stream<T> stream()

Si hay un valor presente, devuelve un Stream secuencial que contiene solo ese valor; de lo contrario, devuelve un Stream vacío.

Ejemplo

import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Tester {
public static void main(String[] args) {
   List<Optional<String>> list = Arrays.asList (
      Optional.empty(), 
      Optional.of("A"), 
      Optional.empty(), 
      Optional.of("B"));

      //filter the list based to print non-empty values
  
      //if optional is non-empty, get the value in stream, otherwise return empty
      List<String> filteredList = list.stream()
         .flatMap(o -> o.isPresent() ? Stream.of(o.get()) : Stream.empty())
         .collect(Collectors.toList());

      //Optional::stream method will return a stream of either one 
      //or zero element if data is present or not.
      List<String> filteredListJava9 = list.stream()
         .flatMap(Optional::stream)
         .collect(Collectors.toList());

      System.out.println(filteredList);
      System.out.println(filteredListJava9);
   }  
}

Salida

[A, B]
[A, B]

método ifPresentOrElse()

Sintaxis

public void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction)

Si hay un valor presente, realiza la acción dada con el valor; de lo contrario, realiza la acción dada basada en vacío.

Ejemplo

import java.util.Optional;

public class Tester {
   public static void main(String[] args) {
      Optional<Integer> optional = Optional.of(1);

      optional.ifPresentOrElse( x -> System.out.println("Value: " + x),() -> 
         System.out.println("Not Present."));

      optional = Optional.empty();

      optional.ifPresentOrElse( x -> System.out.println("Value: " + x),() -> 
         System.out.println("Not Present."));
   }  
}

Salida

Value: 1
Not Present.
método

o()

Sintaxis

public Optional<T> or(Supplier<? extends Optional<? extends T>> supplier)

Si hay un valor presente, devuelve un Opcional que describe el valor; de lo contrario, devuelve un Opcional producido por la función de suministro.

Ejemplo

import java.util.Optional;
import java.util.function.Supplier;

public class Tester {
   public static void main(String[] args) {
      Optional<String> optional1 = Optional.of("Mahesh");

      Supplier<Optional<String>> supplierString = () -> Optional.of("Not Present");

      optional1 = optional1.or( supplierString);
  
      optional1.ifPresent( x -> System.out.println("Value: " + x));
    
      optional1 = Optional.empty();    

      optional1 = optional1.or( supplierString);
  
      optional1.ifPresent( x -> System.out.println("Value: " + x));  
   }  
}

Salida

Value: Mahesh
Value: Not Present

Java

  1. Palabra clave final de Java
  2. Operador de instancia de Java
  3. Clase estática anidada de Java
  4. Clase anónima de Java
  5. Clase única de Java
  6. Reflexión Java
  7. Clase Java ObjectOutputStream
  8. Genéricos de Java
  9. Clase de archivo Java
  10. Java 9 - Mejoras en la API de transmisión
  11. Java 8 - Clase opcional