This article describes a technique for overriding the equals method that preserves the contract of equals even when subclassses of concrete classes add new fields. In Item 8 of Effective Java1, Josh Bloch describes the difficulty of preserving the equals contract when subclassing as a “fundamental problem of equivalence relations in object-oriented languages.” Bloch writes: There is no way to exte