Certaines personnes (en interne) écrivent encore le code suivant lors de la comparaison d'objets. Pour éviter NullPointerException, essayez d'abord d'écrire des constantes,
if ("hoge".equals(hoge)) {
//N'obtenez jamais une NullPointerException
}
Je fais d'abord une vérification nulle, puis je compare.
if (hoge != null && hoge.equals("hoge")) {
//Si hoge est NULL, la chaîne suivante.equals n'est pas exécuté
}
Si vous utilisez Java 7 ou une version ultérieure, veuillez utiliser `` java.util.Objects.equals (Object a, Object b) ''. Dans ce cas, il effectue une comparaison en considérant null.
if (Objects.equals(hoge, "hoge")) {
//En traitement
}
Même si le pointeur (adresse en mémoire) de l'objet est différent Soyez assuré que les valeurs stockées seront comparées les unes aux autres.
String hoge1 = "hoge";
String hoge2 = new String("hoge");
System.out.println(hoge1 == hoge2); // false
System.out.println(hoge1.equals(hoge2)); // true
System.out.println(Objects.equals(hoge1, hoge2)); // true
En écrivant cet article, j'ai revisité java.util.Objects. Je ne savais pas ça! J'écrirai quelque chose comme ça.
toString
Une méthode pour convertir en type String. Si la cible de conversion est null, elle est convertie en chaîne de caractères null.
Object obj = null;
String str = Objects.toString(obj);
System.out.println(Objects.equals(str, "null")); // true
System.out.println(Objects.equals(str, null)); // false
C'est très agréable de pouvoir éviter les nulls, mais je pense qu'il y a des situations où il est difficile de convertir en la chaîne null. Dans ce cas, si vous définissez une chaîne de caractères dans le deuxième argument, vous pouvez modifier la valeur renvoyée lorsqu'elle est nulle.
Object obj = null;
String str = Objects.toString(obj, "C'est NULL!");
System.out.println(str); //Résultat de sortie: NULL!
Je connaissais la méthode toString, mais je ne savais pas que je pouvais définir le deuxième argument.
isNull/nonNull
isNull est une méthode qui renvoie true si l'argument est NULL. nonNull est une méthode qui renvoie false si l'argument est NULL.
Object obj = null;
System.out.println(Objects.isNull(obj)); // true
System.out.println(Objects.nonNull(obj)); // false
obj == null
Ça a l'air plus élégant.
(Je n'ai pas vu la différence de comportement entre obj == null
et obj! = Null
...)
requireNonNull
Une méthode pour vérifier si la cible est NULL. S'il est NULL, une NullPointerException se produira.
Object obj2 = Objects.requireNonNull(obj1);
Si vous essayez de faire une vérification NULL sans utiliser cette méthode,
if (obj1 == null) {
throw new NullPointerException();
} else {
Object obj2 = Objects.requireNonNull(obj1);
}
Sera. Je pense que c'est une méthode simple et pratique.
Objects (Java Platform SE 7) L'ancienne façon d'écrire est vieille! ?? java.util.Objects est trop pratique
Recommended Posts