2015-05-30 2 views
2

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

благодаря

ответ

0

Это зависит от того, как вы спроектировали загрузчик классов, который загрузил класс A

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

механизм

Стандартный Java (Parent первая):

Обычно, когда вы должны загрузить класс по умолчанию, то этот шаблон:

  1. Проверьте, если родительский загрузчик классов загрузить класс (каждый загрузчик класса будет делегировать его родительскому элементу)
  2. Если родительский объект не может загрузить класс, тогда загрузчик дочерних классов попытается загрузить его.
  3. Если ребенок также не может загрузить его, возникает исключение ClassNotFoundException.

Особый случай (ребенок первый):

В этом случае дочерний класс загрузчика (т.е. ваш загрузчик классов может попытаться загрузить класс), если этот класс загрузчик не может загрузить необходимый класс , то он может попросить родителя загрузить класс. Если родитель не может загрузить класс, то ClassNotFoundException поднимается


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