Depuis que je l'ai écrit à l'époque de Java 8, une page résumant les éléments supplémentaires de Java 9 Ce n'est pas si difficile, donc je pense que ça va avec les articles que j'ai déjà, mais j'étudie donc je m'en fiche.
L'article que j'ai écrit pour Java 8 peut être trouvé à ici.
JavaDoc http://download.java.net/java/jdk9/docs/api/java/util/Optional.html
ʻIfPresentOrElse a été ajouté cette fois. Le cas False de ʻif Present
qui existait dans Java 8 peut maintenant être complété avec une seule méthode.
Optional<String> optional = Optional.ofNullable("");
Optional<String> optional2 =Optional.ofNullable(null);
optional.ifPresentOrElse(t -> System.out.println(true), () -> System.out.println(false));
optional2.ifPresentOrElse(t -> System.out.println(true), () -> System.out.println(false));
résultat:
true
false
À partir de ce moment, il est possible de réécrire directement la classe Optinal en streaming.
Optional.ofNullable(null).stream().forEach(System.out::println);
résultat:
Notez que s'il est nul, le type ne peut être connu que s'il est défini sur Type d'objet.
OK List<Object> optional = Optional.ofNullable(null).stream().collect(Collectors.toList());
OK List<String> optional = Optional.ofNullable((String)null).stream().collect(Collectors.toList());
NG List<String> optional = Optional.ofNullable(null).stream().collect(Collectors.toList());
Si vous voulez convertir le type de liste en flux avec succès, vous devez le convertir en flux avec flatmap
.
List<String> list = List.of("aaa", "bbb");
List<String> list2 = null;
Optional.ofNullable(list).stream().flatMap(t -> t.stream()).forEach(System.out::println);
Optional.ofNullable(list2).stream().flatMap(t -> t.stream()).forEach(System.out::println);
résultat:
aaa
bbb
S'il s'agit de map
, il ne sera que de type Stream flatmap
.
Pour ceux d'entre vous qui veulent faire de leur mieux avec map
, j'ai légèrement cherché un moyen simple de convertir une chaîne à partir de Stream flatmap
, je ne pensais pas qu'elle devrait être implémentée ici.
Utilisons-le docilement.
Cette méthode ne fait rien si la valeur existe et ne s'exécute que si elle est Null.
Puisque la valeur de retour est ʻOptional
System.out.println(Optional.ofNullable("aaa").or(() -> Optional.of("bbb")).get());
System.out.println(Optional.ofNullable(null).or(() -> Optional.of("bbb")).get());
résultat:
aaa
bbb
Le JavaDoc ressemble à ces trois fonctionnalités ont été ajoutées. Je n'ai pas vu la note de publication parce que c'était gênant, je l'ajouterai donc s'il y a autre chose.
Recommended Posts