Guten abend,
Ich habe eine Frage zu einer Folie bei mir im Skript. Da steht nämlich folgendes:
Leider war ich an dem Tag nicht in der Vorlesung besucht und weiß nicht so genau was hiermit gemeint ist:
public boolean equals(Object obj)
1. nur mit meinem Typ vergleichen
2. downcast auf meinen Typ
3. meine Attribute vergleichen
Das ist aufjeden fall die Methode equals in der Klasse object.
Aber was meinen die mit punkt 1,2,3 *~*
lg
Ich habe eine Frage zu einer Folie bei mir im Skript. Da steht nämlich folgendes:
Leider war ich an dem Tag nicht in der Vorlesung besucht und weiß nicht so genau was hiermit gemeint ist:
public boolean equals(Object obj)
1. nur mit meinem Typ vergleichen
2. downcast auf meinen Typ
3. meine Attribute vergleichen
Das ist aufjeden fall die Methode equals in der Klasse object.
Aber was meinen die mit punkt 1,2,3 *~*
Java:
Identität und Gleichheit
== Operator prüft auf Identität
- Primitive: identischer Inhalt
- Referenztyp: identische Referenz zum Speicher
equals inhaltliche Gleichheit
Klasse muss equals überschreiben (Klasse Object)
Original equals in Objekt ist dasselbe wie ==
public boolean equals(Object obj)
1. nur mit meinem Typ vergleichen
2. downcast auf meinen Typ
3. meine Attribute vergleichen
equals ist eine Äquivalenzrelation
seien x, y,z Objekte != null
1. reflexiv: x.equals(x) ist true
2. symmetrisch: wenn x.equals(y) == true
dann gilt auch y.equals(x) == true
3. transitiv: wenn x.equals(y) == true und y.equals(z)==true
dann gilt auch x.equals(z) == true
(4.) x.equals(null) ist immer false
====================
gleiche Objekte müssen denselben hashcode haben!!!
=> Methode int hashCode() muss überschrieben werden
lg