(Limité à Java 7 ou version ultérieure) Je souhaite que vous compariez des objets dans Objects.equals

Comparaison avant Java 7

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é
}

Comparaison après Java 7

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

prime

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.

Les références

Objects (Java Platform SE 7) L'ancienne façon d'écrire est vieille! ?? java.util.Objects est trop pratique

Recommended Posts

(Limité à Java 7 ou version ultérieure) Je souhaite que vous compariez des objets dans Objects.equals
Je souhaite envoyer un e-mail en Java.
rsync4j --Je veux toucher rsync en Java.
Je veux faire quelque chose comme "cls" en Java
Je veux aussi utiliser ES2015 avec Java! → (´ ・ ω ・ `)
Lorsque vous souhaitez remplacer dynamiquement l'annotation dans Java 8
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3
Je souhaite simplifier l'instruction if-else de la branche conditionnelle en Java
[Moteur CQ] Je souhaite gérer des collections comme Stream ou .Net LINQ même dans Java 7.
[Java] Je veux effectuer distinctement avec la clé dans l'objet
[Java] Je veux vérifier que les éléments de la liste sont nuls ou vides [Collection Utils]
Comment déboguer à distance Java 9 ou version ultérieure
Je veux arrêter complètement les mises à jour Java
Je veux utiliser @Autowired dans Servlet
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3 (édition PowerMockito)
Je souhaite obtenir l'adresse IP lors de la connexion au Wi-Fi avec Java
Je veux ForEach un tableau avec une expression Lambda en Java
[Java Spring MVC] Je souhaite utiliser DI dans ma propre classe
Exécuter R à partir de Java Je veux exécuter rJava
Même en Java, je veux sortir true avec un == 1 && a == 2 && a == 3 (deuxième décoction Javassist)
Lorsque vous souhaitez lier InputStream dans JDBI3
Je veux utiliser java8 forEach avec index
Je souhaite transmettre APP_HOME pour me connecter à Gradle
Une note quand vous voulez Tuple en Java
Je voulais que (a == 1 && a == 2 && a == 3) vrai en Java
Je veux que vous utilisiez Scala comme meilleur Java pour le moment
J'ai essayé de sortir quatre-vingt-dix-neuf en Java
Je veux être finalement même à kotlin
Je veux écrire rapidement de java vers sqlite
J'ai essayé de créer une compétence Alexa avec Java
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3 (Black Magic)
Je veux obtenir la valeur en Ruby
Vous devez également spécifier l'hôte lors du débogage à distance avec Java 9 ou version ultérieure
[Android Studio] Je souhaite définir des restrictions sur les valeurs enregistrées dans EditText [Java]
Je souhaite renvoyer un objet au format CSV avec en-tête et filtre multilignes en Java
# 1_JAVA Je veux obtenir le numéro d'index en spécifiant un caractère dans la chaîne de caractères
Code à utiliser lorsque vous souhaitez traiter Json en Java avec uniquement des bibliothèques standard
Je souhaite également utiliser Combine dans UIKit.
Je souhaite utiliser les fonctions pratiques de Clojure dans Kotlin
Je veux intégrer n'importe quel TraceId dans le journal
[Gradle] Générer Javadoc, y compris JavaScript dans Java 1.8.0_121 ou version ultérieure
J'ai essayé d'implémenter la notification push Firebase en Java
Je veux aussi utiliser des coquillages à Laradock! !!
# 2 [Note] J'ai essayé de calculer quatre-vingt-dix-neuf avec Java.
Je veux utiliser une petite icône dans Rails
J'ai essayé de créer une compétence Clova en Java
J'ai essayé de créer une fonction de connexion avec Java
Je souhaite définir une fonction dans la console Rails
Je veux faire des transitions d'écran avec kotlin et java!
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
Je veux arrêter les cas de serpent avec des définitions de table
Je veux cliquer sur une broche GoogleMap dans RSpec
J'ai essayé d'implémenter la méthode de division mutuelle d'Eugrid en Java
~ J'ai essayé d'apprendre la programmation fonctionnelle avec Java maintenant ~
J'ai essayé de découvrir ce qui avait changé dans Java 9