У меня есть общее представление о том, как работает сборщик мусора в Java, но мои соображения по поводу уничтожения объекта не в том, что я забочусь об освобождении памяти, а из-за функциональности.Я могу объяснить лучше на примере:
Скажем, я делаю игру, в которой участвуют деньги.Когда человек поднимает объект Money
с земли, я хочу вызвать метод addTo
этого объекта, который включает добавление значения в кошелек этого человека.
public class Money {
/** The value of this object. */
private final int value;
// constructor
public Money(double x) {
this.value = x;
}
// Should be called when a Person picks up this object.
public void addTo(Person bob) {
bob.addToWallet(this.value);
}
// MAIN METHOD
public static void main(String[] args) {
Person bob = new Person();
Money dollar = new Money(1.00);
dollar.addTo(bob); // bob finds $1.00
}
}
После того, как dollar
найденЯ не хочу, чтобы кто-то еще мог это поднять.Другими словами, я не хочу, чтобы я или любая другая программа могли случайно вызвать линию:
dollar.addTo(alice);
Так что после того, как Боб забирает деньги, их ценность добавляется в его кошелек, и нетнеобходимость в объектном представлении этого значения больше.Не то, чтобы я заботился о памяти, которую использует объект, но я не хочу, чтобы этот объект случайно использовался где-то еще в программе.Как мне уничтожить dollar
помимо настройки dollar = null;
?