Hamza Halim Ответов: 1

Динамический экземпляр класса


мне нужно динамически создать экземпляр класса java, который расширяет класс действий (struts), и связать этот экземпляр с определенным url-адресом без использования web.xml.

Что я уже пробовал:

я не могу найти решение!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

1 Ответов

Рейтинг:
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 файл