Представьте себе этот образец класса java:
class A {
void addListener(Listener obj);
void removeListener(Listener obj);
}
class B {
private A a;
B() {
a = new A();
a.addListener(new Listener() {
void listen() {}
}
}
Нужно ли добавить метод finalize в B для вызова a.removeListener? Предположим, что экземпляр A будет совместно использоваться и с некоторыми другими объектами, и переживет экземпляр B.
Меня беспокоит, что я могу создать проблему сборщика мусора. Какова наилучшая практика?