Eine gute Antwort wäre:

Er wird einen Syntaxfehler finden, da name keine Instanzvariable von Object ist.

Testprogramm

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.

FRAGE 22:

Was wird das Programm ausgeben?

Inhaltsverzeichnis