Java Reference
In-Depth Information
TIP: getClass Versus instanceof
Many authors suggest that in the definition of equals for a class such as Employee , given
in Display 7.10, you should not use
else if (getClass() != otherObject.getClass())
return false ;
but should instead use
else if (!(otherObject instanceof Employee))
return false ;
What is the difference and which should you use? At first glance it seems like you should
use instanceof in the definition of equals . The instanceof operator checks to see if an
object is of the type given as its second argument. The syntax is
instanceof
Object instanceof Class_Name
which returns true if Object is of type Class_Name ; otherwise it returns false . So, the
following will return true if otherObject is of type Employee :
(otherObject instanceof Employee)
Suppose that (contrary to what we really did) we instead used instanceof in our defi-
nition of equals for the class Employee and we also used instanceof in our definition
for the class HourlyEmployee , so that the definition of equals for HourlyEmployee is as
follows:
public boolean equals(Object otherObject)
//This is NOT the right way to define equals.
{
if (otherObject == null )
return false ;
else if (!(otherObject instanceof HourlyEmployee))
return false ;
else
{
HourlyEmployee otherHourlyEmployee =
(HourlyEmployee)otherObject;
return ( super .equals(otherHourlyEmployee)
&& (wageRate == otherHourlyEmployee.wageRate)
&& (hours == otherHourlyEmployee.hours));
}
}
(continued)
Search WWH ::




Custom Search