我個人非常喜歡實例初始化器 - 我使用它們爲集合等事物分配默認值,所以在編寫構造函數時,我不必記住每次都爲它們分配相同的默認值。對我而言,這看起來很優雅 - 避免了NPE出現令人討厭的問題,避免了重複的代碼。私有方法看起來並不好,因爲a)它不能將值賦給final字段,b)它可能在代碼中的其他地方運行,c)仍然需要在每個構造函數的開始時顯式調用該方法。實例初始化器是否被認爲是壞風格?
但是,與他人談話的另一面是他們很混淆,一些讀代碼的人可能不明白他們做什麼或什麼時候被調用,因此他們可能會導致比他們解決更多的問題。
是否正確使用這些初始值設定項需要鼓勵或避免?或者它是「各自爲戰」的情況?
沒有語言功能是「好」還是「壞」 - 所有事情都有一個真正閃耀的情形。我認爲更好的問題是「在什麼情況下要避免或使用實例初始化器?」 – templatetypedef 2011-01-13 01:45:47
你幾乎總是希望集合類型的字段是'final',它解決了那些NPE問題。 – 2011-01-13 02:35:24