I would think that if both equals and hashCode are not implemented in a specific class, you would issue a warning like the parent says. I'm not sure of the details, but I assume you can disable warning for regions of code like you can in C#. So when you know you did things right, you can tell the compiler (and other coders that follow you) you know what you are doing. If you didn't do things right then the compiler reminds you to check things out. It's a win in both situations.