StringBuilder, StringBufferjava.util.concurrent.atomic 패키지의 인스턴스에서 equals() 호출을 보고합니다.

해당 클래스에서 equals() 메서드는 재정의되지 않으므로 두 객체의 내용이 동일한 경우에도 false를 반환할 수 있습니다. 의도한 참조 동등성이라면 ==를 사용하여 혼동을 피하는 것이 좋습니다.

StringBuilder, StringBuffer, AtomicBoolean, AtomicInteger, AtomicBooleanAtomicLong에 대한 빠른 수정을 사용하여 내용 비교로 변환할 수 있습니다. 이 빠른 수정은 인스턴스 중 하나가 null일 경우 의미를 바꿀 수 있습니다.

예:


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

빠른 수정을 적용한 후:


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

2017.2의 새로운 기능