我个人非常喜欢实例初始化器 - 我使用它们为集合等事物分配默认值,所以在编写构造函数时,我不必记住每次都为它们分配相同的默认值。对我而言,这看起来很优雅 - 避免了NPE出现令人讨厌的问题,避免了重复的代码。私有方法看起来并不好,因为a)它不能将值赋给final字段,b)它可能在代码中的其他地方运行,c)仍然需要在每个构造函数的开始时显式调用该方法。实例初始化器是否被认为是坏风格?
但是,与他人谈话的另一面是他们很混淆,一些读代码的人可能不明白他们做什么或什么时候被调用,因此他们可能会导致比他们解决更多的问题。
是否正确使用这些初始值设定项需要鼓励或避免?或者它是“各自为战”的情况?
没有语言功能是“好”还是“坏” - 所有事情都有一个真正闪耀的情形。我认为更好的问题是“在什么情况下要避免或使用实例初始化器?” – templatetypedef 2011-01-13 01:45:47
你几乎总是希望集合类型的字段是'final',它解决了那些NPE问题。 – 2011-01-13 02:35:24