포함하는 클래스에 인수 타입으로 java.lang.Object를 취하는 equals()의 다른 오버로드가 없는 경우, java.lang.Object 이외의 인수 타입을 취하는 equals() 메서드를 보고합니다.

공변성 버전의 equals()Object.equals(Object) 메서드를 재정의하지 않습니다. 이는 런타임 시 예기치 않은 동작을 초래할 수 있습니다. 예를 들어, 클래스가 Object.equals(Object) 메서드를 재정의해야 하는 표준 컬렉션 클래스를 생성하는 데 사용되는 경우를 말합니다.

예:


  class Foo {
      public boolean equals(Foo foo) {  // 경고
          return false;
      }
  }
  class Bar {
      public boolean equals(Bar bar) {  // 경고 없음
          return false;
      }
      @Override
      public boolean equals(Object obj) {
          return false;
      }
  }