我的课程X
有x1
,x2
等字段。我需要为类X
定义一个键(它唯一地标识类X
的实例)。所以我用类X
的字段子集创建了一个类Key。类Key的实例将是类X
的字段。初始化密钥的最佳位置是什么?
public class X {
int x1;
int x2;
int x3;
Key key;
}
public class Key {
int x1;
int x3;
}
我有覆盖equals和hashcode方法,它们应该基于key。
答案 0 :(得分:1)
我不会将Key类保留为字段。我会考虑提供一个getter,它会在每次调用时返回一个新的键实例。
更好的是,只要调用equals / hash,密钥类就可以保存对X的引用并访问其字段。这样你就不必手动更新任何密钥值。
然后,您可以在X中实施hashCode
和equals
并使用HashSet
代替HashMap
。
答案 1 :(得分:0)
如果该键应该对X的每个实例都是唯一的,那么只需在构造函数方法中生成它。