仅在必要时才使用静态初始化程序块。例如,有时您需要执行几个步骤来计算字段的最终值。在这种情况下,您有两个机会:编写一个计算值并将字段声明为的方法
staticfinal Integer B = calculateB(),或使用初始化程序块:
static final Integer B;static { int temp = ...; ... B = temp;}在这种情况下,我更喜欢使用静态块,因为方法可能会造成混乱(其他开发人员可能会尝试调用它,尽管在初始化期间只能被调用一次)。
实例字段也是如此,尽管通常可以避免异常的初始化块,而只需将字段的初始化逻辑写入构造函数中(对于静态字段当然是不可能的)。



