Java анонимные классы и сборщик мусора
Предположим, что некоторый класс недоступен, но есть другие анонимные классы, созданные классом, которые достижимы. Может ли первый из них быть удален сборщиком мусора?
Пример:
class Outer {
public Object getInner() {
return new Object() {};
}
}
...
Outer outer = new Outer();
Object inner = outer.getInner();
// Could the "outer" instance be removed here considering that "inner" is using below?
1 ответ
Решение
Нет, внешний экземпляр все еще доступен в этом случае, так как каждый нестатический внутренний класс имеет неявную ссылку на свой экземпляр внешнего класса.