Il comportamento predefinito di Object.hashCode() è di restituire essenzialmente "l'indirizzo" dell'oggetto in modo che a.hashCode() == b.hashCode() se e solo se a == b . Come posso ottenere questo comportamento in una classe definita dall'utente se una superclasse già definisce hashCode()? Ad esempio:Codice hash Java basato sull'identità
class A {
public int hashCode() {
return 0;
}
}
class B extends A {
public int hashCode() {
// Now I want to return a unique hashcode for each object.
// In pythonic terms, it'd look something like:
return Object.hashCode(this);
}
}
Idee?
No, non lo è. È per ottenere un codice in modo che a.hashCode()! = B.hashCode() implichi necessariamente che a! = B. –
... ma a.hashCode() == b.hashCode() non implica un == b che avrei dovuto aggiungere. –
se "a.equals (b)", non necessariamente "a == b", allora i codici hash devono essere uguali: "a.hashCode() == b.hashCode()" –