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