StringBuilderStringBuffer、および java.util.concurrent.atomic パッケージのインスタンスに対する equals() 呼び出しを報告します。

equals() メソッドはこれらのクラスではオーバーライドされていないため、2 つのオブジェクトの中身が同じであっても、false を返す可能性があります。 参照の等価比較を意図している場合は、混乱を避けるために == を使用することをお勧めします。

中身の比較に変換するための StringBuilderStringBufferAtomicBooleanAtomicIntegerAtomicBoolean および AtomicLong 用のクイックフィックスを使用できます。 このクイックフィックスはインスタンスのいずれかが null の場合にセマンティクスを変更する場合があります。

例:


  public void test(StringBuilder sb1, StringBuilder sb2) {
    boolean result = sb1.equals(sb2); // 疑わしいコード
  }

クイックフィックス適用後:


  public void test(StringBuilder sb1, StringBuilder sb2) {
      boolean result = sb1.toString().equals(sb2.toString());
  }

2017.2 の新機能です