== Why is this an issue? In Java, the `Object.equals()` method is used for object comparison, and it is typically overridden in classes to provide a custom equality check based on your criteria for equality. The default implementation of `equals()` provided by the `Object` class compares the memory references of the two objects, that means it checks if the objects are actually the same instance in memory. The "equals" as a method name should be used exclusively to override `Object.equals(Object)` to prevent confusion. It is important to note that when you override `equals()`, you should also override the `hashCode()` method to maintain the contract between `equals()` and `hashCode()`. == How to fix it Either override `Object.equals(Object)` or rename the method. === Code examples ==== Noncompliant code example [source,java,diff-id=1,diff-type=noncompliant] ---- class MyClass { private int foo = 1; public boolean equals(MyClass o) { // Noncompliant; does not override Object.equals(Object) return o != null && o.foo == this.foo; } public static void main(String[] args) { MyClass o1 = new MyClass(); Object o2 = new MyClass(); System.out.println(o1.equals(o2)); // Prints "false" because o2 an Object not a MyClass } } ---- ==== Compliant solution [source,java,diff-id=1,diff-type=compliant] ---- class MyClass { private int foo = 1; @Override public boolean equals(Object o) { // Compliant if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } MyClass other = (MyClass)o; return this.foo == other.foo; } } ---- == Resources === Documentation * https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)[Oracle SDK - Object.equals(Object)] ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message Either override Object.equals(Object), or totally rename the method to prevent any confusion. ''' == Comments And Links (visible only on this page) === is related to: S3974 === is related to: S1221 === is related to: S2953 === on 20 Aug 2013, 13:50:07 Freddy Mallet wrote: Is implemented by \http://jira.codehaus.org/browse/SONARJAVA-300 === on 24 Apr 2017, 10:46:16 Tibor Blenessy wrote: I updated compliant example to not use ``++instanceof++`` operator, because that would reported as violation of RSPEC-2162 endif::env-github,rspecator-view[]