如果我有一个AnObjects数组,我这样做:
AnObject oldObject = arrayOfObjects[validIndex];
arrayOfObjects[validIndex] = new AnObject(oldObject.getVariableForContruction);
oldObject.terminate();
是
arrayOfObjects[validIndex]
的新内容被终止,还是原始的oldObject
被终止?换句话说:oldObject是否包含对AnObject的引用或是否包含对AnObject的引用?
最佳答案
这段代码有点令人困惑。您的对象数组必须引用AnObject
。
AnObject oldObject = arrayOfObjects[validIndex];
您在此处将该引用分配给
oldObject
。arrayOfObjects[validIndex] = new AnObject(oldObject.getVariableForContruction);
现在,您在
validIndex
处设置数组引用以指向AnObject
的新实例。它不再指向oldObject
。oldObject.terminate();
它是对堆上对象的引用。
oldObject
引用堆上的实例;数组中的引用指向您在堆上创建的新实例。如果
oldObject
被终止(无论这意味着什么),那么对于您创建的新实例而言,这无关紧要。该数组仍指向新实例。