Because the equals
method takes a generic Object
as a parameter, any type of object may be passed to it. The method
should not assume it will only be used to test objects of its class type. It must instead check the parameter's type.
public boolean equals(Object obj) { MyClass mc = (MyClass)obj; // Noncompliant // ... }
public boolean equals(Object obj) { if (obj == null) return false; if (this.getClass() != obj.getClass()) return false; MyClass mc = (MyClass)obj; // ... }