Анонимные классы 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 ответов
нет, внешний экземпляр все еще достижим в этом случае, так как каждый нестатический внутренний класс имеет неявное переопределение к его внешнему экземпляру класса.