Java 在哪里初始化派生字段?
我有一个类Java 在哪里初始化派生字段?,java,Java,我有一个类X,其中x1,x2等字段。我需要为类X(它唯一地标识类X的实例)定义一个键。因此,我用classX的字段子集创建了一个类键。class Key的实例将是classX的字段。初始化密钥的最佳位置是什么 public class X { int x1; int x2; int x3; Key key; } public class Key { int x1; int x3; } 我有override equals和hashcode方法,它们应该基于k
X
,其中x1
,x2
等字段。我需要为类X
(它唯一地标识类X
的实例)定义一个键。因此,我用classX
的字段子集创建了一个类键。class Key的实例将是classX
的字段。初始化密钥的最佳位置是什么
public class X {
int x1;
int x2;
int x3;
Key key;
}
public class Key {
int x1;
int x3;
}
我有override equals和hashcode方法,它们应该基于key来工作。如果该key对于X的每个实例都是唯一的,那么就在构造函数方法中生成它。我不会将key类保留为字段。我会考虑提供一个吸收器,每次调用它时都会返回一个新的密钥实例。p> 更好的是,key类可以保存对X的引用,并在调用equals/hash时访问其字段。这样,您就不必手动更新密钥的任何值
同样,您可以在X中实现
hashCode
和equals
,并使用HashSet
而不是HashMap
key.x1和key.x3
的值应该是什么?它们会在运行时生成吗?它们是静态的吗?这取决于初始化字段时使用的内容。一旦初始化,X字段的值将不会更改,但值是什么?它们是随机的吗?或者它们在编译时已知?在编译时未知