在下面的例子中,浮子值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)? –