我的课程中有以下代码:
public class Subclass<T> extends Superclass<T> {
//...
@Override
public boolean equals(Object obj) {
if (obj instanceof Subclass) {
return str.equals(((Subclass<?>) obj).getStr());
}
if (obj instanceof Identity) {
return str.equals(((Subclass<?>) obj).getStr());
}
return false;
}
}
我的超类:
public class Superclass<T> {
@NotNull
String str;
@Override
public boolean equals(Object obj) {
if (obj instanceof Identity) {
return str.equals(((Identity<?>) obj).getStr());
}
return false;
}
@Override
public int hashCode() {
return str.hashCode();
}
并且checkstyle警告我Definition of 'equals()' without corresponding definition of 'hashCode()'.
我是否必须覆盖我的子类中的hashcode()
,即使您不需要它,或者是否有更好的解决方案来摆脱此警告?