Quote Originariamente inviata da Sevenis Visualizza il messaggio
Perdonami, non ho capito la differenza... entrambi, in questo caso, non controllano che i "nome" di entrambe le istanze coincidano? Non ho capito la differenza tra identità e contenuto...
Se ridefinisci equals in una tua classe es. in IndirizzoPersona, sei tu che puoi (e devi) stabilire COSA confrontare per indicare se due oggetti sono "equivalenti". Solo nome e cognome? Anche email? Anche telefono?
Quando per te due oggetti IndirizzoPersona sono in pratica "uguali"?


Riguardo la identità vs contenuto, la identità si riferisce alla uguaglianza di reference.

Integer a = new Integer(123);
Integer b = new Integer(123);
Integer c = a;


a == b dà false. Hanno lo stesso contenuto (valore 123) ma sono due oggetti DISTINTI, il reference non è uguale. Hanno identità differenti.

a == c dà true perché le due variabili hanno lo stesso reference (l'oggetto è uno solo, che lo "vedi" da a o da c).


Quote Originariamente inviata da Sevenis Visualizza il messaggio
hashCode() non l'ho ancora studiato... vado a vedere!
Potresti "sorvolare" su quest'aspetto. hashCode() si usa principalmente nelle collezioni basate su hash-table.