Ele apenas permite que você ignore as verificações de nulos em seu método equals ().
Michael Myers
1
Se você estiver implementando uma coleção, seu método .contains (), quando fornecido "o" precisa ser testado "se essa coleção contém pelo menos um elemento e tal que (o == null? E == null: o.equals (e )). " Da mesma forma, seu método .remove () deve remover tal elemento.
newacct
6
Apenas meus dois centavos. Eu usaria: public static boolean bothNullOrEqual (Object x, Object y) {return (x == y || (x! = Null && x.equals (y))); } IMHO, é mais legível para programadores novatos.
m_vitaly
1
Outro caso de uso: compare um valor para ver se ele mudou de seu valor anterior durante uma verificação suja.
Neromancer
Respostas:
193
Com o Java 7 agora você pode fazer diretamente um cofre nulo igual a:
Este método também é implementado no Googles Dependencyjection-libray Guice.
Niels de
1
Spring também implementa um método semelhante: nullSafeEquals na classe
ObjectUtils
2
O Google Guava também tem Objects.equals ().
Spina de
Isso é apenas nullsafe em relação a x. Para y, depende da implementação de equals do objeto fornecido. (a implementação é return (x == y) || (x != null && x.equals(y));)
emi-le
23
se por acaso você tiver acesso à biblioteca Jakarta Commons, há ObjectUtils.equals () e muitas outras funções úteis.
Respostas:
Com o Java 7 agora você pode fazer diretamente um cofre nulo igual a:
Objects.equals (x, y)
(A biblioteca ObjectUtils.equals () do Jakarta Commons tornou-se obsoleta com o Java 7)
fonte
return (x == y) || (x != null && x.equals(y));
)se por acaso você tiver acesso à biblioteca Jakarta Commons, há ObjectUtils.equals () e muitas outras funções úteis.
EDIT: interpretou mal a pergunta inicialmente
fonte
Se você estiver usando <1,7, mas tiver Guava disponível:
Objects.equal(x, y)
fonte