Анонимные классы 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 ответов


нет, внешний экземпляр все еще достижим в этом случае, так как каждый нестатический внутренний класс имеет неявное переопределение к его внешнему экземпляру класса.