相关疑难解决方法(0)

当超类不重新声明equals()和hashCode()时会出现什么问题?

假设有两个这样的类:

abstract class A { /* some irrelevant methods */ }

class B extends A {
    public final int x;

    public B(final int x) {
        this.x = x;
    }

    /* some more irrelevant methods */
}
Run Code Online (Sandbox Code Playgroud)

然后我使用Eclipse的"Source→Generate hashCode()和equals()......" 在类上生成equals()hashCode()方法B.但Eclipse警告我:

超类'com.example.test2.A'不重新声明equals()和hashCode() - 结果代码可能无法正常工作.

那么,什么会导致生成的代码与生成的方法无法正常工作?


(顺便说一下,生成的方法如下所示:

@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + x;
    return result;
}

@Override
public boolean equals(Object obj) …
Run Code Online (Sandbox Code Playgroud)

java

27
推荐指数
2
解决办法
3778
查看次数

标签 统计

java ×1