初始值设定项与构造函数在 Java 中的使用
因此,我最近一直在提高我的Java技能,并发现了一些我以前不知道的功能。静态初始值设定项和实例初始值设定项就是这样两种技术。
我的问题是,什么时候会使用初始值设定项而不是在构造函数中包含代码?我想到了几个明显的可能性:
static/instance 初始值设定项可用于设置“final”static/instance 变量的值,而构造函数不能
静态初始值设定项可用于设置类中任何静态变量的值,这应该比在每个构造函数的开头有一个“if (someStaticVar == null) // do stuff”代码块更有效
这两种情况都假定设置这些变量所需的代码比简单的“var = value”更复杂,否则似乎没有任何理由在声明变量时使用初始值设定项而不是简单地设置值。
然而,虽然这些不是微不足道的收益(特别是设置最终变量的能力),但似乎确实存在相当有限的情况下应该使用初始值设定项的情况。
当然,对于构造函数中所做的许多操作,人们当然可以使用初始值设定项,但我真的看不出这样做的原因。即使一个类的所有构造函数都共享大量代码,对我来说,使用私有 initialize() 函数似乎比使用初始值设定项更有意义,因为它不会在编写新构造函数时锁定您运行该代码。
我错过了什么吗?是否还有其他一些情况应该使用初始值设定项?或者它真的只是一个相当有限的工具,用于非常特殊的情况?