在哪里初始化派生字段?

时间:2013-10-16 04:33:37

标签: java

我的课程Xx1x2等字段。我需要为类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。

2 个答案:

答案 0 :(得分:1)

我不会将Key类保留为字段。我会考虑提供一个getter,它会在每次调用时返回一个新的键实例。

更好的是,只要调用equals / hash,密钥类就可以保存对X的引用并访问其字段。这样你就不必手动更新任何密钥值。

然后,您可以在X中实施hashCodeequals并使用HashSet代替HashMap

答案 1 :(得分:0)

如果该键应该对X的每个实例都是唯一的,那么只需在构造函数方法中生成它。