我有一个关于hashCode的问题。例如:
class A{
String name;
int age;
@Override
public int hashCode(){
int hash = 0;
hash = age;
hash = 31*hash + name.hashCode();
}
}
class B extends A{
}
class C extends A{
} 我的问题是,如果我用相同的名称和年龄实例化一个B对象和一个C对象。那么A和B的hashCode()也是一样的。它对hashCode()正确吗?如果没有,我应该怎么修改我的代码?
发布于 2016-02-23 05:26:20
当然,hashCode()这样做是可以的。
当然,如果B或C添加了任何新字段(这将是常见的),那么它们应该覆盖hashCode(),调用super.hashCode()并“扩展”该值。
此外,正如@bradimus在评论中所暗示的那样,当你覆盖hashCode()时,你很可能也应该覆盖equals()。
https://stackoverflow.com/questions/35564136
复制相似问题