Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Java 9 - Améliorations facultatives des classes

La classe facultative a été introduite dans Java 8 pour éviter les vérifications nulles et les problèmes NullPointerException. Dans Java 9, trois nouvelles méthodes sont ajoutées pour améliorer ses fonctionnalités.

méthode stream()

Syntaxe

public Stream<T> stream()

Si une valeur est présente, elle renvoie un flux séquentiel contenant uniquement cette valeur, sinon renvoie un flux vide.

Exemple

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

Sortie

[A, B]
[A, B]

méthode ifPresentOrElse()

Syntaxe

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

Si une valeur est présente, exécute l'action donnée avec la valeur, sinon exécute l'action vide donnée.

Exemple

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

Sortie

Value: 1
Not Present.

méthode or()

Syntaxe

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

Si une valeur est présente, renvoie un Optional décrivant la valeur, sinon renvoie un Optional produit par la fonction fournissante.

Exemple

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

Sortie

Value: Mahesh
Value: Not Present

Java

  1. Mot-clé Java final
  2. Opérateur instanceof Java
  3. Classe statique imbriquée Java
  4. Classe anonyme Java
  5. Classe Java Singleton
  6. Réflexion Java
  7. Classe Java ObjectOutputStream
  8. Génériques Java
  9. Classe de fichier Java