如果我有一个 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
被终止(无论那意味着什么),它对您创建的新实例来说并不重要。该数组仍然指向新实例。
关于java - 数组中的元素是对对象的引用还是对自身的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5771317/