¿Existe un método estático estándar de Java "igual o nulo"?

101

Para ahorrar algo de escritura y aclarar mi código, ¿existe una versión estándar del siguiente método?

public static boolean bothNullOrEqual(Object x, Object y) {
  return ( x == null ? y == null : x.equals(y) );
}
Chris Conway
fuente
¿Alguien puede decir dónde es útil tal cosa?
anjanb
2
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:

Objects.equals (x, y)

(La biblioteca ObjectUtils.equals () de Jakarta Commons se ha vuelto obsoleta con Java 7)

Kdeveloper
fuente
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.

EDITAR: leyó mal la pregunta inicialmente

Mate
fuente