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 : Nouvelles méthodes pour la classe Optional

Optional (Java 8) évite les vérifications null et NullPointerException. Java 9 ajoute trois méthodes :

1. stream()

public Stream<T> stream()

Si valeur présente : stream à un élément. Sinon : stream vide. Permet d'utiliser flatMap(Optional::stream) pour aplatir une liste d'Optionals.

Exemple

List<Optional<String>> list = Arrays.asList(
    Optional.empty(), Optional.of("A"), Optional.empty(), Optional.of("B"));

// Java 8 style
List<String> filtered = list.stream()
    .flatMap(o -> o.isPresent() ? Stream.of(o.get()) : Stream.empty())
    .collect(Collectors.toList());

// Java 9 style
List<String> filteredJava9 = list.stream()
    .flatMap(Optional::stream)
    .collect(Collectors.toList());

// Les deux produisent [A, B]

2. ifPresentOrElse(Consumer, Runnable)

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

Si valeur présente : exécute action avec la valeur. Sinon : exécute emptyAction.

Exemple

Optional<Integer> opt = Optional.of(1);
opt.ifPresentOrElse(
    x -> System.out.println("Valeur: " + x),
    () -> System.out.println("Absent")
); // Valeur: 1

opt = Optional.empty();
opt.ifPresentOrElse(
    x -> System.out.println("Valeur: " + x),
    () -> System.out.println("Absent")
); // Absent

3. or(Supplier<Optional>)

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

Si valeur présente : retourne l'Optional actuel. Sinon : retourne l'Optional fourni par le Supplier.

Exemple

Optional<String> opt = Optional.of("Mahesh");
Supplier<Optional<String>> supplier = () -> Optional.of("Absent");

opt = opt.or(supplier);
opt.ifPresent(x -> System.out.println("Valeur: " + x)); // Valeur: Mahesh

opt = Optional.empty().or(supplier);
opt.ifPresent(x -> System.out.println("Valeur: " + x)); // Valeur: Absent

Ces méthodes rendent Optional plus fluide pour la composition fonctionnelle et le traitement conditionnel.

Java

  1. Comprendre le mot-clé final en Java : variables, méthodes et classes
  2. L'opérateur instanceof en Java : guide complet
  3. Comprendre les classes imbriquées statiques en Java : utilisation, différences et exemples
  4. Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
  5. Le pattern Singleton en Java expliqué : implémentation et utilisation sûre
  6. Maîtriser la réflexion Java : inspection des classes, méthodes et champs à l'exécution
  7. Maîtriser Java ObjectOutputStream : Sérialisation, méthodes et exemples pratiques
  8. Maîtriser les génériques Java : Construire du code réutilisable et type-safe
  9. Maîtriser les opérations sur les fichiers Java avec java.io – Création, lecture, écriture et suppression