J'essaie de créer une classe Tuple qui autorise une structure de type Tuple en Java. Le type général de deux éléments dans Tuple sont respectivement X et Y. J'essaie de remplacer un égal correct pour cette classe.
La chose est, je sais que Object.equals tombe en défaut qu'il compare toujours sur la base de références comme "==", donc je ne suis pas sûr de pouvoir l'utiliser. J'ai regardé dans les objets et il y a un égal () en lui. Est-ce que celui-ci se compare toujours aux références, ou se compare-t-il au contenu?
Imaginez rapidement la déclaration de retour comme quelque chose comme:
return Objects.equals(compared.prev, this.prev) && Objects.equals(compared.next, this.next);
où prev et next sont des éléments de Tuple. Est-ce que cela fonctionnerait?
La différence est que la Objects.equals()
considère que deux valeurs nulles sont "égales". Le pseudo code est:
null
ou le même objet, retournez true
null
return false
equals()
du premier paramètreCela signifie qu'il est "null safe" (malgré la mise en œuvre non null safe de la méthode equals()
du premier paramètre).