Bonyolult equals() metódus
Az equals metódus egyszerű megvalósításához használhatja az EqualsBuilder osztályt . Íme néhány példa a működésének bemutatására.
Konkrét mezők beállítása az összehasonlításhoz:
public class User {
private String name;
private String email;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof User user)) return false;
return new EqualsBuilder().append(name, user.name).append(email, user.email).isEquals();
}
}
Ezenkívül ez az osztály képes összehasonlítani az objektumokat reflexióval:
@Override
public boolean equals(Object obj) {
return EqualsBuilder.reflectionEquals(this, obj);
}
Bonyolult hashCode() metódus
A hashCode metódus megvalósításához a HashCodeBuilder osztályt kell használnia .
Mezőválasztás:
@Override
public int hashCode() {
return new HashCodeBuilder(17, 37)
.append(name)
.append(email)
.toHashCode();
}
Reflexió használata hash kód létrehozásához:
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
We use reflection and ignore certain fields:
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this, "name");
}
Bonyolult toString() metódus
Hasonló módon akár a toString() metódust is megvalósíthatja . Ismét a ToStringBuilder osztályt használjuk .
A mezők beállítása az előző két esetben történt:
@Override
public String toString() {
return new ToStringBuilder(this)
.append(name)
.append(email)
.toString();
}
Példa az eredményre:
org.example.User@4b67cf4d[name=John,email=email@email.com]
A mezőneveket kifejezetten megadhatja:
@Override
public String toString() {
return new ToStringBuilder(this)
.append("nameUser", name)
.append("emailUser", email)
.toString();
}
Példa az eredményre:
org.example.User@4b67cf4d[nameUser=John,emailUser=email@email.com]
A szövegstílust a következő beállításokkal módosíthatja:
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
.append(name)
.append(email)
.toString();
}
Példa az eredményre:
User[John,emailUser=email@email.com]
Számos stílus létezik, például a JSON, a no Classname, a short és mások.
Reflexió használata:
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
Reflexió használata és egy adott stílus megadása:
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}