Findbugs warning: Equals method should not assume anything about the type of its argument

Posted by Uri on Stack Overflow See other posts from Stack Overflow or by Uri
Published on 2008-12-12T23:04:20Z Indexed on 2010/06/10 15:12 UTC
Read the original article Hit count: 277

Filed under:
|
|

When running FindBugs on my project, I got a few instances of the error described above.

Namely, my overriding versions of equals cast the RHS object into the same type as the object in which the overriding version is defined.

However, I'm not sure whether a better design is possible, since AFAIK Java does not allow variance in method parameters, so it is not possible to define any other type for the equals parameter.

Am I doing something very wrong, or is FindBugs too eager?

A different way to phrase this question is: what is the correct behavior if the object passed to equals is not the same type as an LHS: Is this a false, or should there be an exception?

For example:

public boolean equals(Object rhs)
{
    MyType rhsMyType = (MyType)rhs; // Should throw exception
    if(this.field1().equals(rhsMyType.field1())... // Or whatever
}

© Stack Overflow or respective owner

Related posts about java

Related posts about equals