Можно ли сказать, что локальный метод-метод является типом внутреннего класса?

Поскольку мы не можем использовать static модификатор с локальным классом, определенным внутри метода, и поскольку нестатические вложенные классы являются внутренними классами, мы могли бы, вероятно, сказать, что локальный класс метода является типом внутреннего класса.

Но с другой стороны, мы говорим, что экземпляры внутренних классов НЕ МОГУТ существовать без экземпляра Live включающего класса. Но экземпляр локального метода-метода, определенного в статическом методе, МОЖЕТ существовать без действующего экземпляра окружающего класса, верно?

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

1 ответ

Решение

мы говорим, что экземпляры внутренних классов НЕ МОГУТ существовать без экземпляра Live включающего класса.

Нет. Из JLS (выделено мое):

Внутренний класс C является прямым внутренним классом класса или интерфейса O, если O является непосредственно включенным объявлением типа C, и объявление C не происходит в статическом контексте.

[...]

Экземпляр i прямого внутреннего класса C класса или интерфейса O связан с экземпляром O, известным как непосредственно включающий экземпляр i.

Это говорит нам о том, что у кого-то может быть внутренний класс, у которого нет включающего экземпляра. В частности, это происходит в ситуациях, когда это определяется в статическом контексте.

Другие вопросы по тегам