Путаница в стилях загрузки классов

1

Как я нашел в одном потоке Java: Разница между Class.forName и ClassLoader.loadClass, что Class.forName() всегда будет использовать ClassLoader вызывающего, тогда как ClassLoader.loadClass() может указать другой ClassLoader

System.out.println(Class.forName("test.Employee").getClassLoader());
System.out.println(ClassLoader.getSystemClassLoader().loadClass("test.Employee").getClassLoader());

Но выше двух строк печатают тот же результат

sun.misc.Launcher$AppClassLoader@7ced01
sun.misc.Launcher$AppClassLoader@7ced01

Объясните причину.

  • 0
    Почему вы ожидаете, что результат будет другим?
  • 0
    если загрузчики классов различаются в обоих стилях, тогда должно быть два разных объекта.
Показать ещё 5 комментариев
Теги:

1 ответ

0

Для вас нет никакой разницы, поскольку ваш текущий класс был загружен с помощью SystemClassLoader, который, как представляется, является sun.misc.Launcher$AppClassLoader@7ced01.

Если вы используете другой загрузчик классов для загрузки класса, оба aproaches будут использовать разные загрузчики классов при использовании в этом классе, который вы загрузили с помощью другого загрузчика классов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню