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;
}
}