Можно ли сказать, что локальный метод-метод является типом внутреннего класса?
Поскольку мы не можем использовать static
модификатор с локальным классом, определенным внутри метода, и поскольку нестатические вложенные классы являются внутренними классами, мы могли бы, вероятно, сказать, что локальный класс метода является типом внутреннего класса.
Но с другой стороны, мы говорим, что экземпляры внутренних классов НЕ МОГУТ существовать без экземпляра Live включающего класса. Но экземпляр локального метода-метода, определенного в статическом методе, МОЖЕТ существовать без действующего экземпляра окружающего класса, верно?
Итак, что я из этого делаю? Первая логика говорит мне, что локальные классы являются типом внутреннего класса, а вторая часть рассуждений говорит мне, что локальный класс не является внутренним классом.
1 ответ
мы говорим, что экземпляры внутренних классов НЕ МОГУТ существовать без экземпляра Live включающего класса.
Нет. Из JLS (выделено мое):
Внутренний класс C является прямым внутренним классом класса или интерфейса O, если O является непосредственно включенным объявлением типа C, и объявление C не происходит в статическом контексте.
[...]
Экземпляр i прямого внутреннего класса C класса или интерфейса O связан с экземпляром O, известным как непосредственно включающий экземпляр i.
Это говорит нам о том, что у кого-то может быть внутренний класс, у которого нет включающего экземпляра. В частности, это происходит в ситуациях, когда это определяется в статическом контексте.