The
equals()
method compares two objects for equality and returns true
if they are equal. The equals()
method provided in the Object
class uses the identity operator (==
) to determine whether two objects are equal. For primitive data types, this gives the correct result. For objects, however, it does not. The equals()
method provided by Object
tests whether the object references are equal—that is, if the objects compared are the exact same object.To test whether two objects are equal in the sense of equivalency (containing the same information), you must override the
equals()
method. Here is an example of a Book
class that overrides equals()
:public class Book {
...
public boolean equals(Object obj) {
if (obj instanceof Book)
return ISBN.equals((Book)obj.getISBN());
else
return false;
}
}
Consider this code that tests two instances of the
Book
class for equality:// Swing Tutorial, 2nd edition
Book firstBook = new Book("0201914670");
Book secondBook = new Book("0201914670");
if (firstBook.equals(secondBook)) {
System.out.println("objects are equal");
} else {
System.out.println("objects are not equal");
}
This program displays
objects are equal
even though firstBook
and secondBook
reference two distinct objects. They are considered equal because the objects compared contain the same ISBN number.You should always override the
equals()
method if the identity operator is not appropriate for your class.Note: If you override
equals()
, you must override hashCode()
as well.
No comments:
Post a Comment