您可以采用一种杂乱的方式构造BankAccount对象,其中是否分配ID取决于您使用的构造函数。如果您重写构造函数以便将它们链接在一起,而主要构造函数负责所有核心职责,而次要构造函数将默认值和委托分配给主要构造函数,那么初始化将具有一致的结果。
(术语是Scala的,在该语言中强制使用构造函数链接。)
这里的主要构造函数是:
public BankAccount(double initialBalance){ balance = initialBalance; lastAssignedNumber++; accountNumber = lastAssignedNumber;}并添加一个辅助构造函数:
public BankAccount() { this(0);}无论您呼叫哪个,都将生成一个ID。
(这与Lorenzo的答案类似,我为清楚地描述问题而提出投票。不同之处在于,他的链接朝着另一个方向发展,因此默认值被分配然后被覆盖。)



