equals()
methods taking an argument type other than
java.lang.Object
if the containing class does not have other overloads of
equals()
that take java.lang.Object
as
its argument type.
A covariant version of equals()
does not override the
Object.equals(Object)
method. It may cause unexpected
behavior at runtime. For example, if the class is used to construct
one of the standard collection classes, which expect that the
Object.equals(Object)
method is overridden.
Example:
class Foo {
public boolean equals(Foo foo) { // warning
return false;
}
}
class Bar {
public boolean equals(Bar bar) { // no warning here
return false;
}
@Override
public boolean equals(Object obj) {
return false;
}
}