Qual è la prassi migliore per restituire un valore per il metodo hashCode () se il campo personalizzato utilizzato in equals è nullo?
Ho una situazione in cui l'override di equals () è implementato utilizzando i campi personalizzati. Di solito si consiglia di sovrascrivere hashCode () usando i campi personalizzati usati in equals (). Ma se tutti i campi personalizzati usati in equals () sono nulli, quale sarebbe l'implementazione migliore per hashCode ()?
Esempio:
class Person {
private String firstName;
private String lastName;
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
@Override
public boolean equals(Object object) {
boolean result = false;
if (object == null || object.getClass() != getClass()) {
result = false;
} else {
Person person = (Person) object;
if (this.firstName == person.getFirstName()
&& this.lastName == tiger.getLastName()) {
result = true;
}
}
return result;
}
@Override
public int hashCode() {
int hash = 3;
if(this.firstName == null || this.lastName == null) {
// <b>What is the best practice here, </b>
// <b>is return super.hashCode() better ?</b>
}
hash = 7 * hash + this.firstName.hashCode();
hash = 7 * hash + this.lastName.hashCode();
return hash;
}
}
- è richiesto per verificare null in hashCode ()?
- Se sì, cosa deve essere restituito se i valori personalizzati sono nulli?