При необходимости JVM разрешает ссылку на тип и обращается к подходящему class loader, если класс ещё не определён. Затем выполняются необходимые загрузка, линковка и, при активном использовании, инициализация.
Как работает процесс загрузки класса, когда метод встречает неизвестный класс во время выполнения?
При необходимости JVM разрешает ссылку на тип и обращается к подходящему class loader, если класс ещё не определён. Затем выполняются необходимые загрузка, линковка и, при активном использовании, инициализация.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
При необходимости JVM разрешает ссылку на тип и обращается к подходящему class loader, если класс ещё не определён. Затем выполняются необходимые загрузка, линковка и, при активном использовании, инициализация.
Обычные загрузчики используют делегирование, но конкретная политика может отличаться у специализированных loaders. Resolution может быть ленивым: наличие ссылки в байткоде не означает немедленную инициализацию. Ошибки поиска через явный API и ошибки связывания при выполнении могут иметь разные типы исключений. Runtime-идентичность класса включает имя и defining loader.