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