Согласно ClassLoader.getSystemClassLoader()
javadoc обычно это загрузчик классов, используемый для запуска приложения. Свойство java.system.class.loader
можно использовать для переопределения возвращаемого загрузчика классов, однако:
Системное свойство для переопределения загрузчика системного класса не проверяется, пока виртуальная машина почти полностью не инициализирована. Код, который выполняет этот метод во время запуска, должен позаботиться о том, чтобы не кэшировать возвращаемое значение до полной инициализации системы.
В более сложных установках obj.getClass().getClassLoader()
или Person.class.getClassLoader()
может возвращать пользовательский загрузчик классов, например. OSGI . Это полностью зависит от этого пользовательского загрузчика классов, чтобы вернуть системный класс загрузчик. Это
может выбрать не, например, поскольку он обойдет границы загрузки классов OSGI, см. этот ответ .
Таким образом, в большинстве случаев они должны быть одинаковыми, но ничто не мешает вам настроить JVM или написать программное обеспечение, которое сделает их разными.