J'ai récemment découvert l' Objects.hash()
méthode.
Ma première pensée a été que cela remet de l'ordre dans votre hashCode()
de la mise en œuvre d'un lot. Voir l'exemple suivant:
@Override
//traditional
public int hashCode() {
int hash = 5;
hash = 67 * hash + (int)(this.id ^ (this.id >>> 32));
hash = 67 * hash + (int)(this.timestamp ^ (this.timestamp >>> 32));
hash = 67 * hash + Objects.hashCode(this.severity);
hash = 67 * hash + Objects.hashCode(this.thread);
hash = 67 * hash + Objects.hashCode(this.classPath);
hash = 67 * hash + Objects.hashCode(this.message);
return hash;
}
@Override
//lazy
public int hashCode() {
return Objects.hash(id, timestamp, severity, thread, classPath, message);
}
Même si je dois dire que cela semble trop beau pour être vrai. Aussi, je n'ai jamais vu ce type d'utilisation.
Existe-il des inconvénients de l'utilisation de Objects.hash()
par rapport à la mise en œuvre de votre propre code de hachage? Quand devrais-je utiliser chacune de ces approches?
Mise à jour
Bien que ce sujet est marqué comme résolu, n'hésitez pas à continuer à poster des réponses qui fournissent de nouvelles informations et de leurs préoccupations.