Java Отражение - PullRequest
       7

Java Отражение

1 голос
/ 15 сентября 2011

Я загружаю некоторые классы из местоположения (используя мой собственный Classloader), и пользователи моего Приложения могут добавлять свои файлы jar в это местоположение, и я загружу все классы, присутствующие в этих файлах jar. Это похоже на некоторый плагин времени выполнения.особый тип. Затем я сохраняю эти литеральные объекты класса в HashMap (который является полем определенного класса) и создаю экземпляры оттуда всякий раз, когда это необходимо. Если какой-то литерал класса удаляется из этой HashMap, то никто не сможетсоздать экземпляр этого класса-литерал, как класс должен быть выгружен для моих пользователей, которые добавляют классы.2) Я также хочу, чтобы мои пользователи не имели никакого кода, который манипулирует моим hashMAp, переносящим все литералы класса, которые я загрузил.

1 Ответ

0 голосов
/ 15 сентября 2011

У меня не было должного опыта с рефлексией, но я хотел бы предложить следующее:

Иметь класс (скажем, LoadedClassesManager), содержащий записи обо всех экземплярах, которые были созданы.Он также должен реализовывать наблюдаемый шаблон (т.е. отвечать на прослушиватели событий).

Чтобы все экземпляры загруженных классов вызывались вызовом метода в LoadedClassManager (что-то вроде getNewInstance(Class clazz, params)).Метод также регистрирует вызывающий объект в качестве прослушивателя (для случая, когда класс выгружается).

Таким образом, когда некоторый класс должен быть выгружен, LoadedClassesManager будет вызывать даже обработчики прослушивателей событий для обработкикласс выгружается соответственно.

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