Java анонимные классы и сборщик мусора - PullRequest
7 голосов
/ 02 марта 2012

Предположим, что некоторый класс недоступен, но есть другие анонимные классы, сгенерированные классом, которые достижимы.Может ли первый из них быть удален сборщиком мусора?

Пример:


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 Ответ

8 голосов
/ 02 марта 2012

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

...