Er wird einen Syntaxfehler finden, da name
keine
Instanzvariable von Object
ist.
Dieses Konzept ist ein bisschen verwirrend. Es ist eine gute Idee ein Testprogramm zu schreiben, um zu sehen, ob die Dinge so funktionieren wie erwartet:
import java.util.* ; import java.io.*; class Eintrag { String name; String nummer; // Konstruktor Eintrag( String name, String nummer ) { this.name = name; this.nummer = nummer; } // Methoden public boolean equals( Object anderes ) { return name.equals( ((Eintrag)anderes).name ); } public String toString() { return "Name: " + name + " Nummer: " + nummer; } } class TelefonbuchTest { public static void main ( String[] args) throws IOException { Vector telefonbuch = new Vector( 10 ); telefonbuch.addElement( new Eintrag( "Amy", "123-4567") ); telefonbuch.addElement( new Eintrag( "Bob", "123-6780") ); telefonbuch.addElement( new Eintrag( "Hal", "789-1234") ); telefonbuch.addElement( new Eintrag( "Deb", "789-4457") ); telefonbuch.addElement( new Eintrag( "Zoe", "446-0210") ); // in telefonbuch mit unserer equals() Methode nach Hal suchen int indexWo = telefonbuch.indexOf( new Eintrag( "Hal", "") ) ; System.out.println( "indexOf gibt: " + indexWo + " zurueck" ) ; } }
Der Eintrag, den wir als Suchziel konstruiert haben,
hat einen Leerstring für die Telefonnummer.
Die equals()
Methode wird ihn mit Einträgen vergleichen,
die eine nicht-leere Telefonnummer haben.
Aber die equals()
Methode wurde so geschrieben, dass sie nur
die Namen der zwei Einträge betrachtet. Also ist das OK.