Simplemente le permite omitir comprobaciones nulas en su método equals ().
Michael Myers
1
Si está implementando una colección, su método .contains (), cuando se le da "o" necesita probar "si esta colección contiene al menos un elemento e tal que (o == null? E == null: o.equals (e )). " Del mismo modo, su método .remove () tiene que eliminar dicho elemento.
newacct
6
Solo mis dos centavos. Yo usaría: public static boolean bothNullOrEqual (Object x, Object y) {return (x == y || (x! = Null && x.equals (y))); } En mi humilde opinión, es más legible para programadores novatos.
m_vitaly
1
Otro caso de uso: compare un valor para ver si ha cambiado de su valor anterior durante una verificación sucia.
Neromancer
Respuestas:
193
Con Java 7 ahora puede hacer directamente un igual seguro nulo:
Este método también se implementa en Google Dependency injection-libray Guice.
Niels
1
Spring también implementa un método similar: nullSafeEquals en la clase
ObjectUtils
2
Google Guava también tiene Objects.equals ().
Spina
Esto es solo nulo con respecto a x. Para y, depende de la implementación de iguales del objeto dado. (la implementación es return (x == y) || (x != null && x.equals(y));)
emi-le
23
Si por casualidad tiene acceso a la biblioteca de Jakarta Commons, hay ObjectUtils.equals () y muchas otras funciones útiles.
Respuestas:
Con Java 7 ahora puede hacer directamente un igual seguro nulo:
Objects.equals (x, y)
(La biblioteca ObjectUtils.equals () de Jakarta Commons se ha vuelto obsoleta con Java 7)
fuente
return (x == y) || (x != null && x.equals(y));
)Si por casualidad tiene acceso a la biblioteca de Jakarta Commons, hay ObjectUtils.equals () y muchas otras funciones útiles.
EDITAR: leyó mal la pregunta inicialmente
fuente
Si está usando <1.7 pero tiene Guayaba disponible:
Objects.equal(x, y)
fuente