Name: Amy Nummer: 123-4567
equals( Object )
Methode
class Eintrag { String name; String nummer; . . . . . // Methoden public boolean equals( Object anderes ) { return name.equals( ((Eintrag)anderes).name ); } . . . . . } |
Studieren Sie sorgfältig die equals( Object )
Object
) und
verwendet eine typische Lösung (eine Typumwandlung in einen spezifischen Typ.)
Alle Klassen haben eine equals( Object )
Methode,
da die Object
-Klasse sie definiert.
(Vielleicht möchten Sie an dieser Stelle einen Blick in die Java Dokumentation für Object
werfen.)
Die meisten Klassen überschreiben diese Methode mit einer geeigneteren Methode.
Die Parameterliste ist ( Object anderes )
.
Das besagt, dass equals()
mit einer Referenz
auf ein anderes Object
verwendet wird.
Aber, in unserer speziellen Applikation werden wir zwei
Eintrag
-Objekte miteinander vergleichen.
(Ein Eintrag wird den Namen enthalten, den wir suchen;
der andere wird ein Eintrag in einem Vector
von Daten sein.)
Wir wissen was der Parameter sein wird (da wir den Code schreiben),
aber der Compiler weiss es nicht.
Ohne genauere Information wird der Compiler nur von den Methoden und Elementen von
Object
ausgehen.
Um dem Compiler mitzuteilen was wir erwarten,
muss eine Typumwandlung verwendet werden:
return name.equals( ((Eintrag)anderes).name );
Das sagt dem Compiler, dass ein anderes
eine Referenz auf einen Eintrag
ist.
Das muss getan werden, um auf das Feld name
eines Eintrag
-Objekts zuzugreifen.
Sie mögen sich fragen: Warum nicht eine equals()
Methode auf diese Weise schreiben:
public boolean equals( Eintrag anderes ) { return name.equals( anderes.name ); }
Das ist eine korrekte Methode, aber sie überschreibt nicht
die equals( Object )
Methode, die alle Objekte haben.
Es ist diese zuletzt genannte Methode, die mit der
indexOf()
Methode verwendet wird.
Wir müssen sie überschreiben, um die eingebaute Suchmethode
von Vector
nutzen zu können.