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