【发布时间】:2018-01-28 19:53:24
【问题描述】:
就像在标题中一样: 我的实体如下所示:
@Entity
public class Example {
@Id
private Integer id;
private String name;
// fields, getters & setters ommited
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Example example = (Example) o;
return id != null ? id.equals(examle.id) : examle.id == null;
}
@Override
public int hashCode() {
return id != null ? id.hashCode() : 0;
}
}
自动生成的equals方法如上所示。
我的问题是:
- 为什么需要手动替换:
o == null || getClass() != o.getClass()
进入
!(o instanceof 示例)
- 如果将此类的对象放在 java.util.Set 中会发生什么?哪些部分会违反合同规则?
【问题讨论】:
-
1. 为什么确实如此?
-
你不需要更换它。
-
在实体的情况下看起来不一样。
标签: java spring object entity equals