public class MyClass
{
// declare the collection, and initialize it.
private ArrayList _coll;
MyClass( )
{
_coll = new ArrayList( );
}
MyClass( int size )
{
_coll = new ArrayList( );
_coll = new ArrayList( size );
}
}
最後 一個原因要把初始化放到構造函數裡就是促使異常的捕獲。你不能在初始化器中 使用try塊,任何在構造時因成員變量產生的異常可能衍生到對象的外面。你無 法試圖在你的類裡來捕獲它。你應該把那些初始化代碼移到構造函數裡,這樣你 就可以捕獲異常從而保證你的代碼很友好(參見原則45)。
變量初始化器 是一個最簡單的方法,在忽略構造函數時來保證成員變量被正確的初始化。初始 化器在所有的構造函數之前被執行。使用這樣的語法意味著當你在為後來發布的 版本中添加了構造函數時,不會忘記添加恰當的初始化到構造函數裡。當構造函 數與初始化生成同樣的成員對象時,就使用初始化器。閱讀簡單而且易於維護。
返回教程目錄