如果我有一个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被终止(无论这意味着什么),那么对于您创建的新实例而言,这无关紧要。该数组仍指向新实例。

10-08 19:10