J'ai trouvé une nouvelle façon de gérer NullPointerException dans Java8, je vais donc l'écrire comme un rappel.
J'essaierai d'éteindre le visqueux immédiatement.
java
public class Test {
public static void main(String[] args) {
String str = null;
System.out.print(str.length());
}
}
Résultat du traitement
Exception in thread "main" java.lang.NullPointerException
at Test.main(Test.java:6)
J'ai une NullPointerException. Comme solution de contournement implémentée à partir de java8, en ajoutant facultatif NullPointer peut être traité. Changez avec l'image ci-dessous.
Exemple d'action
import java.util.Optional;
public class Test {
public static void main(String[] args) {
String str = null;
// System.out.print(str.length());
Optional<String> strOpt = Optional.ofNullable(str);
strOpt.ifPresent(v -> System.out.println(v.length()));
}
}
Le processus s'est terminé sans aucune exception NullPointerException.
ʻOptional` est implémenté dans java8 et versions ultérieures https://docs.oracle.com/javase/jp/8/docs/api/java/util/Optional.html
Optional<String> strOpt = Optional.ofNullable(str);
Vous pouvez utiliser la fonction ʻofNullable () en encapsulant str avec ʻOptional
.
En tant qu'argument de la fonction ʻifPresent Enregistrez le contenu de
str dans la variable
v` et utilisez-le dans la structure du système.
Cette méthode est appelée une expression lambda, et c'est une nouvelle fonction implémentée à partir de java8 avec Optional.
strOpt.ifPresent(v -> System.out.println(v.length()));
et
get () `... (Ajouté le 31/07/2020)Au début, j'ai écrit l'exemple suivant comme un modèle différent, mais la méthode suivante semble être *** une solution de contournement mortelle **. Je le posterai comme un mauvais exemple avec un commandement à moi-même. Vous pouvez le voir en lisant cet article https://qiita.com/BlueRayi/items/ef46496ef2ef36b9cbb7#%E3%81%AA%E3%82%8B%E3%81%B9%E3%81%8Foptionalifpresent%E3%82%82%E4%BD%BF%E3%81%86%E3%81%AA ( Lorsque vous lisez cet article, il semble que la vérification Null elle-même en utilisant Facultatif est absurde en premier lieu.)
mauvais exemple
import java.util.Optional;
public class Test {
public static void main(String[] args) {
String str = null;
// System.out.print(str.length());
Optional<String> strOpt = Optional.ofNullable(str);
if(strOpt.isPresent()) {
String message = strOpt.get();
System.out.println(message.length());
}
}
}
Plus précisément, il est facile d'implémenter la méthode de get () la valeur en utilisant isPresent () dans l'instruction if. Il est bon de penser que la fonction isPresent () est utilisée lorsqu'elle est inévitable car le mérite d'utiliser Optional n'est pas utilisé, et l'article suivant semble être facile à comprendre en termes de nuance.
Vous devriez rarement utiliser get. Le but de l'utilisation d'Optionnel est le message "S'il n'y a pas de valeur, veuillez le faire." Si vous obtenez soudainement une exception en utilisant> get, c'est la même chose que d'obtenir une NullPointerException.
https://irof.hateblo.jp/entry/2015/05/05/071450
Recommended Posts