Inspectopedia Help

Covariant 'equals()'

Reports 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.


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; } }

Inspection Details

Available in:

IntelliJ IDEA 2023.3, Qodana for JVM 2023.3


Java, 233.SNAPSHOT

Last modified: 13 July 2023