Когда вы вызываете new Plant()
, вы создаете новый экземпляр объекта Plant. Если вы его нигде не сохраните, он будет удален сборщиком мусора java, как только он покинет область видимости.
Что такое размах? Это в основном внутри фигурных скобок al oop, method if statement et c:
if( test == 5){
Object instance1 = new Object();
while(otherCondition == true){
Object instance2 = new Object();
// Now both instance1 and instance2 are in this scope
}
// Now instance2 does is not longer in scope, and will be destroyed unless we store it somewhere.
}
//Now we do not have access to either instance1 and instance2 since they are both out of scope
Когда объекты покидают область видимости, это означает java, что мы закончили с ними, и он должен освободить их из памяти, если мы не укажем java их где-нибудь сохранить.
ArrayList<Object> list = new ArrayList<Object>();
if( test == 5){
Object instance1 = new Object();
list.add(instance1);
while(otherCondition == true){
Object instance2 = new Object();
list.add(instance2);
}
}
В этом втором примере, поскольку мы добавляем объекты в список, они сохраняются, и поэтому они не будут удалены.
В вашем случае это очень похоже на описанные выше случаи, но вместо оператора if это al oop. С циклами каждая новая итерация похожа на свою собственную область видимости, и поскольку вы где-то храните свои объекты Flower (с myGarden.add(flower);
), они не удаляются, но каждая итерация l oop создает новый объект-цветок.