Why is this an issue?

Due to the similar name with the methods Object.toString, Object.hashCode and Object.equals, there is a significant likelihood that a developer intended to override one of these methods but made a spelling error.

Even if no such error exists and the naming was done on purpose, these method names can be misleading. Readers might not notice the difference, or if they do, they may falsely assume that the developer made a mistake.

How to fix it

If you intended to override one of the methods Object.toString, Object.hashCode, or Object.equals, correct the spelling. Also, you should add the @Override modifier, which causes a compiler error message in case the annotated method does not override anything.

If the naming was done on purpose, you should rename the methods to be more distinctive.

Code examples

Noncompliant code example

public int hashcode() { /* ... */ }             // Noncompliant

public String tostring() { /* ... */ }          // Noncompliant

public boolean equal(Object obj) { /* ... */ }  // Noncompliant

Compliant solution

@Override
public int hashCode() { /* ... */ }             // Compliant

@Override
public String toString() { /* ... */ }          // Compliant

@Override
public boolean equals(Object obj) { /* ... */ } // Compliant