Quelqu'un peut-il dire où une telle chose est utile?
anjanb
2
Cela vous permet simplement de sauter les vérifications nulles dans votre méthode equals ().
Michael Myers
1
Si vous implémentez une Collection, votre méthode .contains (), lorsqu'elle est donnée "o" doit tester "si cette collection contient au moins un élément e tel que (o == null? E == null: o.equals (e )). " De même, votre méthode .remove () doit supprimer un tel élément.
newacct
6
Juste mes deux cents. J'utiliserais: public static boolean bothNullOrEqual (Object x, Object y) {return (x == y || (x! = Null && x.equals (y))); } À mon humble avis, il est plus lisible pour les programmeurs novices.
m_vitaly
1
Autre cas d'utilisation: comparez une valeur pour voir si elle a changé par rapport à sa valeur précédente lors d'une vérification incorrecte.
Neromancer
Réponses:
193
Avec Java 7, vous pouvez maintenant faire directement un nul sûr égal:
Cette méthode est également implémentée dans Googles Dependency injection-libray Guice.
Niels
1
Spring implémente également une méthode similaire: nullSafeEquals sur la classe
ObjectUtils
2
Google Guava a également Objects.equals ().
Spina
Ce n'est que nullsafe concernant x. Pour y, cela dépend de l'implémentation des égaux de l'objet donné. (la mise en œuvre est return (x == y) || (x != null && x.equals(y));)
emi-le
23
si par hasard vous avez accès à la bibliothèque Jakarta Commons, il y a ObjectUtils.equals () et beaucoup d'autres fonctions utiles.
Réponses:
Avec Java 7, vous pouvez maintenant faire directement un nul sûr égal:
Objects.equals (x, y)
(La bibliothèque Jakarta Commons ObjectUtils.equals () est devenue obsolète avec Java 7)
la source
return (x == y) || (x != null && x.equals(y));
)si par hasard vous avez accès à la bibliothèque Jakarta Commons, il y a ObjectUtils.equals () et beaucoup d'autres fonctions utiles.
EDIT: mal lu la question au départ
la source
Si vous utilisez <1.7 mais que Guava est disponible:
Objects.equal(x, y)
la source