equals()
calls on StringBuilder
, StringBuffer
and instances of
java.util.concurrent.atomic
package.
The equals()
method is not overridden in these classes, so it may return false
even when the contents of the
two objects are the same.
If the reference equality is intended, it's better to use ==
to avoid confusion.
StringBuilder
, StringBuffer
, AtomicBoolean
,
AtomicInteger
, AtomicBoolean
and AtomicLong
is available
to transform into a comparison of contents.
The quick-fix may change the semantics when one of the instances is null.
Example:
public void test(StringBuilder sb1, StringBuilder sb2) {
boolean result = sb1.equals(sb2); // Suspicious
}
After the quick-fix is applied:
public void test(StringBuilder sb1, StringBuilder sb2) {
boolean result = sb1.toString().equals(sb2.toString());
}
New in 2017.2