在下面的例子中,浮子值0.5是碼塊在其被添加()編的外部訪問:ArrayList.add()的對象實例化?
ArrayList<Float> myFloatArray = new ArrayList<Float>();
{
myFloatArray.add(0.5f);
}
// Data is accessible out of the block
有人可以解釋在對象instanciation方面會發生什麼?爲什麼當我們離開它定義的塊時,Float對象不會被銷燬?是否相當於寫作
myFloatArray.add(new Float(0.5f));
我問這個問題的原因是我想爲每個浮點值添加時間信息。我想到了創建一個類,它將使我能夠寫:
myDataPointArray.add(new dataPoint(new GregorianCalendar(2011, 11, 11), 0.5f);
然而,(如預期),該ArrayList是塊中的數據的空外是加()版。我試圖讓我的課變得不可改變,因爲我相信這可能會有所幫助,但它並不能奏效。有人能指出我記錄此行爲的正確位置嗎?我無法找到它,我認爲它超出了這個ArrayList示例。
在堆上創建的項目(即,通過'new')不具有由範圍(即程序塊)控制的生命週期。所以我不明白爲什麼你的第二個例子導致一個問題(我不希望列表是空的)。您可以創建一個自包含的測試用例(請參閱http://sscce.org)? –