Чем статический вложенный класс отличается от inner class Java

Статический вложенный класс не требует экземпляра Service и не имеет неявной ссылки на него. Нестатический inner class связан с конкретным внешним экземпляром.

Короткий ответ

Что ответить на собеседовании

Статический вложенный класс не требует экземпляра Service и не имеет неявной ссылки на него. Нестатический inner class связан с конкретным внешним экземпляром.

Подробный разбор

Ответ с пояснениями

Условие

В Java Client объявлен внутри Service. В одном варианте он static, в другом — обычный нестатический inner class. Как меняются создание и доступ к внешнему объекту?

Ответ

Статический вложенный класс не требует экземпляра Service и не имеет неявной ссылки на него. Нестатический inner class связан с конкретным внешним экземпляром.

Создание: new Service.Client() для static и service.new Client() для inner. Если клиенту не нужно состояние внешнего объекта, static-вариант уменьшает скрытую связанность. Термин «статичный класс» следует уточнять: верхнеуровневый класс Java не объявляется static.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее