Рейтинг:
0
Afzaal Ahmad Zeeshan
Вам нужно использовать отражение в Java для любого вида манипуляций поведением этого типа во время выполнения. Вы можете попробовать следующий код и посмотреть, работает ли он (поскольку вы не проявили никаких усилий, я не буду давать никакого кода).
Class<?> cls = Class.forName(name); // name holds the fully qualified name for type.
Object clsInstance = (Object) cls.newInstance();
Затем вы можете иметь экземпляр этого типа. Я использовал следующий код для создания нового экземпляра типа "String" в Java,
try {
// TODO code application logic here
Class classtype = Class.forName("java.lang.String");
Object instance = classtype.newInstance();
if((String)instance != null) {
System.out.println("Object created.");
} else {
System.out.println("Object not created -- or null.");
}
} catch (ClassNotFoundException ex) {
Logger.getLogger(HelloJava.class.getName()).log(Level.SEVERE, null, ex);
} catch (Exception er) {
// Skipped.
}
/* Output:
run:
Object created.
BUILD SUCCESSFUL (total time: 0 seconds)
*/
Вы можете создать любой объект, просто передайте тип этого объекта для создания для Java runtime, чтобы построить его, а затем получить экземпляр этого объекта.
Для получения дополнительной информации о рефлексии или типе класса в Java, пожалуйста, прочтите:
Класс (Java Platform SE 7 )[
^]
Hamza Halim
спасибо, но что мне действительно нужно, так это то, что экземпляр должен быть связан с url-адресом без использования web.xml, только с кодированием
Afzaal Ahmad Zeeshan
Web.xml это вовсе не стандарт и не требование. Ваш вопрос был неясен, теперь он еще более неясен. Пожалуйста, будьте конкретны в том, что вам действительно нужно.
Hamza Halim
мне нужно динамически создать экземпляр класса java, который расширяет класс действий (struts), и связать этот экземпляр с определенным url-адресом без использования struts-config.xml, чтобы связать этот url-адрес с этим экземпляром.
&ЛТ;путь="/threed1" тип="DManager1" проверки="ложно"и GT;
&ЛТ;путь="/threed2" тип="DManager2" проверки="ложно"и GT;
DManager1 и DManager2 на самом деле являются одним и тем же классом. поэтому я хочу использовать только один класс и создавать экземпляры для обработки URL-адресов(threed1, threed2,..., threedN)
Afzaal Ahmad Zeeshan
Итак, вы пытались это сделать?
Код, которым я поделился, фактически создаст экземпляр объекта.
Hamza Halim
да, это работает, но как я могу сделать так, чтобы этот экземпляр служил url one или url two ...
Afzaal Ahmad Zeeshan
Затем вам нужно создать объект для этого URL-адреса. Просто передайте полное имя объекта (например, java. lang.Строка за строкой), и это будет работать.
В случае, если вы хотите разработать приложение, чтобы просто иметь другой URL-адрес для веб-работника,просто используйте блок if...else.
В противном случае, сразу после строки "if ((String) instance != null) {}", вы можете добавить свой собственный код для добавления URL-адреса один или два.
Есть ли в этом смысл?
Hamza Halim
Спасибо, Мистер Ахмед, но у меня та же проблема. когда я хочу связать url-адрес с экземпляром, я продолжаю sturts-config.xml файл и я пишу следующие строки:
&ЛТ;путь="/threed1" тип="DManager1" проверки="ложно"и GT;
&ЛТ;путь="/threed2" тип="DManager2" проверки="ложно"и GT;
а tomcat создает экземпляры DManager1, DManager2 и связывает эти экземпляры с путями /threed1, /threed2.
это то, что я хочу сделать динамически, не записывая эти строки дальше sturts-config.xml файл