equals() 메서드를 재정의하지만 hashCode() 메서드를 재정의하지 않거나 그 반대인 클래스를 보고합니다. 이러한 클래스가 Collection 또는 HashMap에 추가되면 문제가 발생할 수 있습니다.
빠른 수정은 누락된 메서드에 대한 디폴트 구현을 생성합니다.
예:
class StringHolder {
String s;
@Override public int hashCode() {
return s != null ? s.hashCode() : 0;
}
}
빠른 수정을 적용한 후:
class StringHolder {
String s;
@Override public int hashCode() {
return s != null ? s.hashCode() : 0;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof StringHolder)) return false;
StringHolder holder = (StringHolder)o;
if (s != null ? !s.equals(holder.s) : holder.s != null) return false;
return true;
}
}