Quote Originariamente inviata da Sevenis Visualizza il messaggio
Ma in che senso definire equals all'interno di IndirizzoPersona?
Il equals() serve per stabilire se due oggetti sono di contenuto/significato "equivalente". Ridefinire il public boolean equals(Object) in una classe permette quindi di verificare in modo generalizzato se due oggetti di quella classe hanno contenuto/significato "equivalente". Se non si ridefinisce equals, resta quello "ereditato" da Object, che si basa SOLO sulla identità degli oggetti e NON sul loro contenuto. Chiaramente devi stabilire tu COSA confrontare cioè in che cosa due oggetti sono da ritenere "equivalenti".

E detto in generale, se si ridefinisce equals() si dovrebbe anche ridefinire hashCode(), perché tra i due c'è un contratto ben preciso.