java-algorand-sdk icon indicating copy to clipboard operation
java-algorand-sdk copied to clipboard

Correctness: Overriding equals, but not hashCode

Open michaeldiamant opened this issue 3 years ago • 1 comments

Subject of the issue

While working on https://github.com/algorand/java-algorand-sdk/pull/340#discussion_r912043589, I observed numerous instances where equals is overwritten, but not hashCode.

The status quo breaks hashCode's contract as discussed in https://stackoverflow.com/questions/2265503/why-do-i-need-to-override-the-equals-and-hashcode-methods-in-java.

Your environment

N/A

Steps to reproduce

N/A

Expected behaviour

There's at least 2 solutions:

  • Immediately - Consistently override hashCode and equals. Prefer using an IDE-generated implementation.
  • Longer term - Upgrade to >= JDK 16 and replace class definitions with records (https://docs.oracle.com/en/java/javase/16/language/records.html). Among other benefits, records obviate the need to manage equals and hashCode implementations.

Actual behaviour

N/A

Acceptance Criteria

  1. Updating hand written code to implement both functions.
  2. Update code generator to generate hashCode along with equals, then regenerate the code.

michaeldiamant avatar Jul 06 '22 20:07 michaeldiamant

For the good first issue, implementing the first part of this would be helpful:

  1. Updating hand written code to implement both functions.

winder avatar May 23 '23 20:05 winder