重写hashCode,为什么不使用this.hashCode()?

时间:2014-04-22 10:18:04

标签: java override hashcode

在Java中覆盖equals()hashcode()方法时,为什么不经常使用它?

public int hashCode() {
    return (int) this.hashCode();
}

甚至上面介绍了一个素数:

public int hashCode() {
    final int prime = 31; //31 is a common example
    return (int) prime * this.hashCode();
}

这是不好的做法还是只是根本不起作用?

1 个答案:

答案 0 :(得分:2)

方法:

public int hashCode() {
    return (int) this.hashCode();
}

会导致StackOverflowError,因为它会无限地递归到自身,除非您将this替换为super。你的第二种方法有同样的问题。

此外,将int类型的值转换为int也是无用的。

如果您没有为方法提供任何有用的新内容,请不要覆盖它。