首页 > 代码库 > "==" and "!=" should not be used when "equals" is overridden

"==" and "!=" should not be used when "equals" is overridden

It is equivalent to use the equality == operator and the equals method to compare two objects if the equals method inherited Object has not been overridden. In this case both checks compare the object references.

But as soon as equals is overridden, two objects not having the same reference but having the same value can be equal. This rule spots suspicious uses of == and != operators on objects whose equals methods are overridden.

Noncompliant Code Example

String firstName = getFirstName();   //String is a good example of a class overriding the equals method
String lastName = getLastName();

if (firstName == lastName) { ... };   // Non-compliant, the two literals can have the same value and yet the condition is false

Compliant Solution

String firstName = getFirstName();
String lastName = getLastName();

if (firstName != null && firstName.equals(lastName)) { ... };

"==" and "!=" should not be used when "equals" is overridden