Avoid classes overriding only equals() or only hashCode()

Production RiskSoftware ResiliencyProgramming Best Practices

Avoid classes overriding only equals() or only hashCode()

This code insight reports all classes that override only boolean equals(Object) or only int hashCode() .


Why you should care

Often classes are used in HashMap to provide an efficient storage and retrieval. The Java platform architects anticipated the importance of hash-based collection classes — such as Hashtable, HashMap, and HashSet — in typical Java applications, and comparing against many objects with equals() can be computationally expensive.
If your java class is used or can be used in a hash-based collection, override both of these methods to avoid any issues that can be painful to find when the issue appear in production because the error is not in the code that is present, but in the code that is absent.

Business Impacts

Production Risk

CAST recommendations




About CAST and Highlight’s Code Insights

Over the last 25 years, CAST has leveraged unique knowledge on software quality measurement by analyzing thousands of applications and billions of lines of code. Based on this experience and community standards on programming best practices, Highlight implements hundreds of code insights across 15+ technologies to calculate health factors of a software.

See featuresHow it works