equals-hashcode: equals/hashCode contract demos, missing hashCode and constant-hash costs, mutable keys, records, JPA entity id trap, 13 contract tests

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_017ic4b66uwsWr9B1ouyrzUh
This commit is contained in:
Claude
2026-11-12 20:08:35 +05:30
parent 319697c345
commit 682b7b067c
22 changed files with 692 additions and 0 deletions
+17
View File
@@ -0,0 +1,17 @@
== Reflexive / null ==
p.equals(p) = true
p.equals(null) = false
== Symmetry broken by instanceof + extra field ==
plain.equals(red) = true
red.equals(plain) = false
List.of(plain).contains(red) = false
List.of(red).contains(plain) = true
== Transitivity broken by the lenient fix ==
r.equals(plain) = true
plain.equals(b) = true
r.equals(b) = false
== Consistency broken by a changing equals() ==
f.equals(f2) x4 = true false true false