Создайте еще один экземпляр динамически загружаемого класса - Java - PullRequest
1 голос
/ 27 апреля 2011

Итак, я создал экземпляр класса, без проблем выполняя поиск в jar-файлах. Я установил его для создания экземпляра с помощью c.newInstance () (является ли экземпляр подходящим словом для использования здесь?)

Позже в программе я могу захотеть создать другой экземпляр этого класса, если произойдет определенное событие.Как я могу создать это, не просматривая все файлы Jar, пока не найду нужный, а затем снова создаю его?Можно ли как-то создать его, если у меня еще есть ссылка на первый?

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

Спасибо

Ответы [ 2 ]

4 голосов
/ 27 апреля 2011

Сохранить ссылку на класс вашего объекта

Class c = dynamicObject.getClass();

и

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

Object anotherDynamicObject = c.newInstance(); // you can cast accordingly

иначе, скажем, есть consturctor, который принимает int, вы можете сделать

Constructor constructor = c.getConstructor(int.class);
Object anotherDynamicObject = constructor.newInstance(1);
2 голосов
/ 27 апреля 2011

Предполагая, что "x" - это объект, который вы создали ...

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