This class overrides only one of equals()
and hashCode()
.
Java objects are expected to obey a number of invariants related to equality. One of these invariants is that equal objects must have equal hashcodes. In other words, if a.equals(b) == true
then a.hashCode() == b.hashCode()
.
Failure to uphold this invariant is likely to cause trouble if objects of this class are stored in a collection. If the objects of the class in question are used as a key in a Hashtable or if they are inserted into a Map or Set, it is critical that equal objects have equal hashcodes.
Example 1: The following class overrides equals()
but not hashCode()
.
public class halfway() {
public boolean equals(Object obj) {
...
}
}
[1] Standards Mapping - Common Weakness Enumeration - (CWE) CWE ID 581
[2] D. H. Hovermeyer FindBugs User Manual