почему getClassLoader()
нужно вызывать с использованием объекта Class
? почему я не могу просто вызвать getClassLoader()
используя объект любого класса, присутствующего в этом пакете? например, почему я не могу получить, какой Classloader
загрузил мой класс, используя (new Test()).getClassLoader()
?
Ну, вам нужно различать классы и объекты.
Test t = new Test()
Произведет объект. Если вы хотите его загрузчик, вам нужно получить доступ к классу объекта, потому что загрузчик классов загружает классы, а не объекты. Пусть говорят
ClassLoader cl = t.getClass().getClassLoader();
Если вам просто нужна ссылка на загрузчик классов, который загрузил Test, вы также можете написать Test.class.getClassLoader().
как писал BackSlash, ClassLoader загружает класс и ссылается на объект класса. Если бы это было указано в экземплярах класса, то эта ссылка была бы прикреплена к вечному объекту в виртуальной машине, увеличивая размер объектов. Так как объекты все равно ссылаются на свой объект класса, нет необходимости дублировать ссылку на загрузчик классов в каждом объекте.
getClassLoader()
вызывается для объекта класса классаTest
:)