在没有hashcode()定义的情况下重写子类中的equals方法

时间:2016-08-30 08:48:50

标签: java annotations override equals hashcode

我的课程中有以下代码:

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(),即使您不需要它,或者是否有更好的解决方案来摆脱此警告?

0 个答案:

没有答案