Как я нашел в одном потоке 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
Объясните причину.
Для вас нет никакой разницы, поскольку ваш текущий класс был загружен с помощью SystemClassLoader, который, как представляется, является sun.misc.Launcher$AppClassLoader@7ced01
.
Если вы используете другой загрузчик классов для загрузки класса, оба aproaches будут использовать разные загрузчики классов при использовании в этом классе, который вы загрузили с помощью другого загрузчика классов.