члены класса java, загруженные через загрузчик классов, неинициализированы - PullRequest
0 голосов
/ 01 февраля 2012

Я загружаю java-класс из jar-файла с помощью URLClassLoader.

String className = ...
File jarFile = ...
ClassLoader parent = this.getClass().getClassLoader();
ClassLoader urlLoader = new URLClassLoader(new URL[] { jarFile.toURI().toURL() }, parent);
Class <?> loadedClass = urlLoader.loadClass(className);

Это работает до сих пор, но все члены загруженного класса (такие как объявленные методы и т. Д.) Являются нулевыми после загрузки,Я предполагаю, что это предполагаемое поведение, и все члены загружаются динамически при использовании.Есть ли способ их сразу инициализировать?

1 Ответ

1 голос
/ 01 февраля 2012

Как вы получаете доступ к членам loadedClass? Закрытые поля будут инициализированы при первом вызове соответствующего метода получения, поэтому вы никогда не должны получать null от этих методов получения.

Если вы используете эти геттеры, и они работают как положено, почему вы хотите инициализировать всех участников с нетерпением? Это похоже на ненужную работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...