Класс-загрузчик (ClassLoader) — это объект, ответственный за загрузку классов Java во время выполнения. JVM не знает о файлах классов до тех пор, пока они не будут явно или неявно запрошены. ClassLoader отвечает за поиск, чтение и определение байт-кода класса, превращая его в объект Class.
Основные типы встроенных ClassLoader'ов:
jre/lib/ext. Служит для расширения платформы. Является дочерним для Bootstrap ClassLoader.ClassLoader'ы работают по принципу делегирования: когда ClassLoader получает запрос на загрузку класса, он сначала делегирует этот запрос своему родителю. Если родитель не может загрузить класс, тогда текущий ClassLoader пытается загрузить его сам.
Динамическая загрузка классов в Java позволяет загружать классы во время выполнения программы, а не при запуске. Это достигается с помощью Class.forName() или путем создания пользовательского ClassLoader'а.
Применение динамической загрузки:
Пример динамической загрузки с использованием Class.forName():
java
Создание пользовательского ClassLoader'а для более гибкой загрузки:
java
Важно понимать, что каждый ClassLoader определяет собственное пространство имен для классов. Класс с одним и тем же полным именем, загруженный разными ClassLoader'ами, считается разными классами. Это свойство используется для изоляции приложений или их компонентов.