我使用 eclipse 来生成对象的 hashCode 和 equals 方法的覆盖,这产生了一些关于 hashCode 覆盖的问题。下面的 hashCode() 是否正确?
问题:
- 为什么eclipse会生成两个结果=代码行?我认为将这两个结果加在一起是合适的。任何想法为什么它们是单独的任务?
- 最后的 int 素数可以是任何素数吗?
-int结果应该总是1吗?
public class Overrider {
private Long id;
private String name;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Overrider other = (Overrider) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}