Re: do I need to override the equals() method?
Marteno Rodia a ??crit :
I've defined a class which, of course, silently extends
java.lang.Object, but I've added some my own attributes. Now I want to
be able to compare two objects of my class i.e. to check if they are
identical. Do I need to write my own equals() method or can I use the
inherited java.lang.Object.equals() method?
Albert wrote:
You could have searched a little...
What makes you think he didn't?
Object.equals() only compare reference equality, which means it returns
true for exact same object
so if you want that equals returne true for "content identical" object,
yes you should override the equals(Object) method.
It depends on your uses. If you put object in collections and use
contains() for example, you might want to override equals.
Joshua Bloch covers this in /Effective Java/, a book you must own.
Always override 'equals()' and 'hashCode()' together if at all. Make sure
they are consistent with each other, i.e., if two instances compare equal,
they must have the same hash code. (The converse is not true.) Make sure you
involve each field that logically affects value equality.
For example, in comparing instances of a hypothetical 'Person' class, you
might involve 'nationalID' (e.g., Social Security number). Or you might
compare a combination of 'birthName', 'birthDate', 'birthPlace', 'birthGender'
and 'disambiguator'. The same field(s) would be involved in both the
'equals()' and 'hashCode()' methods.
--
Lew