У меня есть private
метод внутри class A
, как показано ниже:
class A
{
//...
private void initPlay(final long duration)
{
myTimer = new Utils.Timer(duration) // non-static member variable
{
@Override
public void timerExpired(Object o)
{
// ... do something
myTimer = null;
initReplay(); // unrelated method
}
};
}
}
myTimer
относится к анонимному внутреннему class
, который реализует абстрактный метод Utils.Timer
timerExpired(Object)
.
Теперь, когда таймер истек и этот метод вызван, я просто устанавливаю myTimer = null;
. Это назначение сделано просто для того, чтобы убедиться, что нет никаких ссылок на этот объект, и GC может убрать его, когда найдет.
Это нормально делать? Есть ли побочный эффект (кроме нулевых проверок, о которых я уже позаботился)?