It will find a syntax error because name is not
an instance variable of Object.
These ideas are a little bit confusing. It is a good idea to write a test program to see if things work as expected:
import java.util.* ;
import java.io.*;
class Entry
{
String name;
String number;
// constructor
Entry( String n, String num )
{
name = n; number = num;
}
// methods
public boolean equals( Object other )
{
return name.equals( ((Entry)other).name );
}
public String toString()
{
return "Name: " + name + " Number: " + number;
}
}
class PhoneBookTest
{
public static void main ( String[] args) throws IOException
{
Vector phone = new Vector( 10 );
phone.addElement( new Entry( "Amy", "123-4567") );
phone.addElement( new Entry( "Bob", "123-6780") );
phone.addElement( new Entry( "Hal", "789-1234") );
phone.addElement( new Entry( "Deb", "789-4457") );
phone.addElement( new Entry( "Zoe", "446-0210") );
// look for Hal in phone using our equals() method
int spot = phone.indexOf( new Entry( "Hal", "") ) ;
System.out.println( "indexOf returns: " + spot ) ;
}
}
The entry we build as the target of the search has an empty
string for the phone number.
The equals() method will compare it with entries
that have a non-empty phone number.
But equals() is written to look only at the
name of the two entries, so this is OK.