Почему Class.forName («Тест»). GetClassLoader ()?

1

почему getClassLoader() нужно вызывать с использованием объекта Class? почему я не могу просто вызвать getClassLoader() используя объект любого класса, присутствующего в этом пакете? например, почему я не могу получить, какой Classloader загрузил мой класс, используя (new Test()).getClassLoader()?

  • 5
    Я бы сказал, потому что Class Loader загружает классы, а не объекты .
  • 1
    @BackSlash - теоретически getClassLoader() вызывается для объекта класса класса Test :)
Показать ещё 3 комментария
Теги:
classloader

2 ответа

1
Лучший ответ

Ну, вам нужно различать классы и объекты.

Test t = new Test()

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

ClassLoader cl =  t.getClass().getClassLoader();

Если вам просто нужна ссылка на загрузчик классов, который загрузил Test, вы также можете написать Test.class.getClassLoader().

  • 0
    Спасибо !! :)...понял..
0

как писал BackSlash, ClassLoader загружает класс и ссылается на объект класса. Если бы это было указано в экземплярах класса, то эта ссылка была бы прикреплена к вечному объекту в виртуальной машине, увеличивая размер объектов. Так как объекты все равно ссылаются на свой объект класса, нет необходимости дублировать ссылку на загрузчик классов в каждом объекте.

Ещё вопросы

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