0

我有一个Xx1,x2等作为其字段的类。我需要为 class 定义一个键X(它唯一地标识 class 的一个实例X)。所以我用 class 的字段子集创建了一个类 Key X。类 Key 的实例将是 Class 的一个字段X。初始化密钥的最佳位置是什么?

public class X {
   int x1;
   int x2;
   int x3;
   Key key;
}

public class Key {
   int x1;
   int x3;
}

我有覆盖等于和哈希码的方法,它们应该基于键工作。

4

2 回答 2

1

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

更好的是,键类可以持有对 X 的引用并在调用 equals/hash 时访问其字段。这样,您将永远不必手动更新任何键值。

再说一次,您可以只在 X 中实现hashCodeand并使用 a而不是 a 。equalsHashSetHashMap

于 2013-10-16T06:49:02.697 回答
0

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

于 2013-10-16T04:41:28.907 回答