Re: do I need to override the equals() method?
- From: Lew <noone@xxxxxxxxxxxxx>
- Date: Fri, 03 Apr 2009 09:50:13 -0400
Marteno Rodia a écrit :
I've defined a class which, of course, silently extendsjava.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
.
- Follow-Ups:
- Re: do I need to override the equals() method?
- From: Mike Schilling
- Re: do I need to override the equals() method?
- References:
- do I need to override the equals() method?
- From: Marteno Rodia
- Re: do I need to override the equals() method?
- From: Albert
- do I need to override the equals() method?
- Prev by Date: Re: Java Web Start
- Next by Date: Re: Classes "Dependency Walker"?
- Previous by thread: Re: do I need to override the equals() method?
- Next by thread: Re: do I need to override the equals() method?
- Index(es):
Relevant Pages
|