In this mini Fragment, we introduce Joshua's eighth Item. This one is a doozy, probably one of the longest items in the group of the effective Java series, but most definitely quite important.
This episode is brought to you by Rollbar. Go to rollbar.com/fragmented to get their Bootstrap plan for free for 90 days.
Stay tuned for more items from our "Effective Java for Android developers" Fragment series.
Show Notes * Effective Java (2nd Edition) - Joshua Bloch
Obey the general contract when overriding equals
When to not override equals: * Each instance of the class is inherently unique. * You don't care whether the class provides a "logical equality" test. * A superclass has already overridden equals, and the superclass behavior is appropriate for this class.
The equals method implement an equivalence relation which states it must be: * Reflexive * Symmetric * Transitive * Consistent * For any non-null reference x, x.equals(null) must return false.
A recipe for a high-quality equals method is as such: * Use the == operator to check for references to this object. * Use the instanceof operator to check if the argument has the correct type * Cast to the correct type. * Check all field types and corresponding field types. * Finally, when done, ask yourself - is this method symmetric, transitive and consistent?
Caveats * Always override hashcode when you override equals * Don't be too clever! * Don't substitute another type for Object in the equals declaration.
Contact * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]