Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Java 9 - Melhorias de classe opcionais


Classe opcional foi introduzida no Java 8 para evitar verificações nulas e problemas de NullPointerException. No java 9, três novos métodos são adicionados para melhorar sua funcionalidade.

método stream()

Sintaxe

public Stream<T> stream()

Se um valor estiver presente, ele retornará um Stream sequencial contendo apenas esse valor, caso contrário, retornará um Stream vazio.

Exemplo

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);
   }  
}

Saída

[A, B]
[A, B]

método ifPresentOrElse()

Sintaxe

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

Se um valor estiver presente, executa a ação fornecida com o valor, caso contrário, executa a ação baseada em vazio fornecida.

Exemplo

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."));
   }  
}

Saída

Value: 1
Not Present.

método ou()

Sintaxe

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

Se um valor estiver presente, retorna um Opcional descrevendo o valor, caso contrário, retorna um Opcional produzido pela função fornecedora.

Exemplo

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));  
   }  
}

Saída

Value: Mahesh
Value: Not Present

Java

  1. Palavra-chave final Java
  2. Java instanceof Operator
  3. Classe estática aninhada em Java
  4. Classe anônima Java
  5. Classe Java Singleton
  6. Reflexão Java
  7. Classe Java ObjectOutputStream
  8. Genéricos Java
  9. Classe de arquivo Java
  10. Java 9 - Melhorias na API de fluxo