Java Basics - toString, equals, hashCode per Reflection erzeugen
Ohne die Methoden toString, equals, hashCode kann man mit den meisten Java-Objekten nicht viel anfangen – z.B. in Unit-Tests werden Objekte mit equals verglichen und bei Unterschieden mit toString ausgegeben. Praktischerweise kann man sich diese Methoden per Reflection erzeugen, so dass automatisch alle vorhandenen Fields ausgewertet werden:
import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; public class ValueBase { [...] /** {@inheritDoc} */ @Override public String toString() { return ToStringBuilder.reflectionToString(this); } /** {@inheritDoc} */ @Override public int hashCode() { return HashCodeBuilder.reflectionHashCode(this); } /** {@inheritDoc} */ @Override public boolean equals(final Object obj) { return EqualsBuilder.reflectionEquals(this, obj); } }
Das funktioniert sogar mit Vererbung, wenn man das will: Wenn eine Klasse von ValueBase ableitet, erhält diese automatisch eine ordentliche Implementierung der drei Methoden, bei der alle vorhandenen Fields der Klasse über Reflection evaluiert werden. Das ist für viele Situationen vollkommen ausreichend.
Lesenswerte weitere Infos zu den Details der Reflection im JavaDoc.
Mehr? Aktuelle Artikel oder alle Artikel im Archiv.