J'étais en train de parcourir un tutoriel de classe facultative ici - https: // www .geeksforgeeks.org / java-8-optional-class / qui contient le
Optional.ofNullable(words[5]).ifPresent(a -> System.out.println(a.toLowerCase())).orElse();// doesn't work```
J'essaye de le faire avec moins de lignes en utilisant ifPresent vérification de Facultatif comme
Optional.ofNullable(words[5]).ifPresent(a -> System.out.println(a.toLowerCase()))
mais impossible d'aller plus loin
String[] words = new String[10];
Optional<String> checkNull = Optional.ofNullable(words[5]);
if (checkNull.isPresent()) {
String word = words[5].toLowerCase();
System.out.print(word);
} else{
System.out.println("word is null");
}
Y a-t-il un moyen de le faire?
3 Réponses :
Java-9 a introduit ifPresentOrElse pour quelque chose de similaire dans l'implémentation. Vous pouvez l'utiliser comme:
System.out.println(Optional.ofNullable(words[5])
.map(String::toLowerCase)
.orElse("word is null"));
Avec Java-8, vous devez inclure un intermédiaire Facultatif / String et utiliser comme:
String value = Optional.ofNullable(words[5])
.map(String::toLowerCase)
.orElse("word is null");
System.out.println(value);
qui peut également être écrit comme:
Optional<String> optional = Optional.ofNullable(words[5])
.map(String::toLowerCase);
System.out.println(optional.isPresent() ? optional.get() : "word is null");
ou si vous ne souhaitez pas du tout stocker la valeur dans une variable, utilisez:
Optional.ofNullable(words[5])
.map(String::toLowerCase) // mapped here itself
.ifPresentOrElse(System.out::println,
() -> System.out.println("word is null"));
Si vous utilisez java 9 , vous pouvez utiliser la méthode ifPresentOrElse () ::
Optional.of(words[5]).ifPresentOrElse( value -> System.out.println(a.toLowerCase()), () -> System.out.println(null) );
Si Java 8 , regardez ce bon aide-mémoire :
http://www.nurkiewicz.com/2013/08/optional-in-java-8-cheat-sheet.html
Pour être un peu plus clair, ifPresent prendra Consumer comme argument et le type de retour est void , vous ne pouvez donc pas effectuer d'actions imbriquées sur ce
System.out.println(Optional.ofNullable(words[5]).map(String::toLowerCase).orElse(null));
Si une valeur est présente, invoquez le consommateur spécifié avec la valeur, sinon ne faites rien.
consommateur - bloc à exécuter si une valeur est présente NullPointerException - si la valeur est présente et que le consommateur est nul Donc au lieu de print Juste pour imprimer
ifPreset () utilisez map()String result =Optional.ofNullable(words[5]).map(String::toLowerCase).orElse(null);
public void ifPresent(Consumer<? super T> consumer)
placard que vous viendrez pour java-8 serait
System.out.println (Facultatif.ofNullable (mots [5]). map (String: : toLowerCase) .orElse ("Not Present"));Remarque : J'ai tagué la question avec Java-8 en fonction du lien que vous avez partagé, n'hésitez pas à supprimer ou à modifier la modification.
avez-vous essayé java 9 ?? BTW bonne question :)