Java referencing an out-a-scope object
I'm saving the previous value of a Java object. I (almost) understand references are strong, weak, etc. but I can't find an example that classifies my specific situation that is apparently referencing an out-of-scope object. (I've looked at a lot of posts on this subject.)
Is the Java reference aTestCopy
to the out-of-scope array of objects aTest
valid?
It's a shallow copy but is it subject to garbage collection thus I need a deep copy for it to work reliably every time? Or should the declaration of the new object aTest
be placed outside the while
with the "previous" copied object aTestCopy
?
Is the use of a null
a good practice for the first-time-through switch or should that be a separate boolean
variable?
Thanks.
Tester[] aTestCopy = null;
while(true)
{
Tester[] aTest = myMethodReturnsATesterArray(); // new values
// need code to skip using aTestCopy the first time through - no previous value
// else use the previous value here
aTestCopy = aTest; // save them for the next use of previous values
}
Solution 1:
There is no problem to use null
as initial value for reference types in Java. But there isn't any relevance between initialize a reference type as null
and garbage collection. You should initialize aTestCopy
as null to use in another scope like in your case in while
.
Garbage collection is triggered whenever an object in memory is not pointed anymore by any reference.
When you assign a reference type to another reference type (if it is not immutable in this case), you made copy the memory address of that value. So when you can make a change in aTestCopy
will be reflected to the reference aTest
.