在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();
}
这是不好的做法还是只是根本不起作用?
答案 0 :(得分:2)
方法:
public int hashCode() {
return (int) this.hashCode();
}
会导致StackOverflowError
,因为它会无限地递归到自身,除非您将this
替换为super
。你的第二种方法有同样的问题。
此外,将int
类型的值转换为int
也是无用的。
如果您没有为方法提供任何有用的新内容,请不要覆盖它。