Kontrakt
- Null-Akzeptanz
x ungleich null => x.equals(null) = false
2. Reflexivität
x ungleich null => x.equals(x) = true
3. Symmetrie
x.equals(y) = true <=> y.equals(x) = true
4. Transitivität
x.equals(y) = true && y.equals(z) = true => x.equals(z) = true
5. Konsistenz
x,y ungleich null => x.equals(y) konstant
Prüfungen
- Keine Null-Referenzen
- keine identische Objekte
- Vergleich von Objekten gleichen Typs (a.getClass()==b.getClass())
Hilfsklassen
EqualsUtils.nullSafeEquals(a.getAtt(),b.getAtt());
Objects.equal(ob1, ob2)
Regeln bei Vererbung
Nutze in equals() niemals direkte Zugriffe auf Attribute der Basisklassen.
if (!base.equals(other){ return false;}