powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Как динамически вызвать метод с параметрами
12 сообщений из 12, страница 1 из 1
Как динамически вызвать метод с параметрами
    #32156369
Oracle_Developer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1 Наименование метода, который надо вызвать для данного класса определяеться во время выполнения программы ( из файла). Подскажите как это сделать

2 В фале также может быть записан и исходный код который тоже надо вызвать.

Подскажите плиз
...
Рейтинг: 0 / 0
Как динамически вызвать метод с параметрами
    #32156385
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Не знаю.
2. Не понял, что значит "вызвать"? Скомпилить на лету и выполнить?

Есть мнение, что дизайн несколько кривоват.
...
Рейтинг: 0 / 0
Как динамически вызвать метод с параметрами
    #32156630
Aion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Oracle_Developer

1. А-ля reflection ;-)
Как пример:
http://www.javacommerce.com/articles/reflection.htm

2. javac :-)))
...
Рейтинг: 0 / 0
Как динамически вызвать метод с параметрами
    #32156672
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
reflection - eto krasivo, no gemoroyno dlia otladki.
Voobshe ispol'zovat' nekompilirovanniy kod - eto opasno,
xot' i teoreticheski vozmozhno (sam ne delal).

Sovetuu vse-taki loadit' ne kod a config files, kotorie bydyt
prosto ykazivat', kakoy metod ispol'zovat' pri razlichnix
ysloviiax. ZHelatel'no, chto sami classi/metodi bili yzhe
otkompilirovani i podklycheni (loaded).

Eto - obshie soveti. Mozhet, esli ti ob'iasnish' sityaciy popodrobnee,
chto-nibyd' eshe pridymaem...

JJ
...
Рейтинг: 0 / 0
Как динамически вызвать метод с параметрами
    #32159132
Саша Питерский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Developer !

Вообще тема очень интересная. Скоро мне предстоит рабиратся с подобной задачей, но несколько шире:
1. Загрузка выполняемого кода приложения с сервера.
2. Обмен между серверами БД директивами, содержащими описание действий, которые нужно выполнить на удаленном сервере + данные.

Можем обсудить идеи реализации
...
Рейтинг: 0 / 0
Как динамически вызвать метод с параметрами
    #32159569
Oracle_Developer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Eto - obshie soveti. Mozhet, esli ti ob'iasnish' sityaciy popodrobnee,
chto-nibyd' eshe pridymaem... "

Задача ставиться следующим образом.

1) Есть XML-документ.
2) Этот XML-документ надо разобрать . В процессе разбра он может быть достроен т.е в исходном документе есть куски текста который тоже надо разобрать и структурировать как XML-документ.
3) Есть файл который описывает метод применяемый к у узлу с наименованием таким-то ( из стандартного набора или исходный код этого метода)
4) файл значит мы разобрали. дополнили. теперь надо его обойти и для каждого узла вызвать метод из файла нстройки.

Проблемы
1) Как вызвать метод. Вроде понятно где копать. Но как проектировать не понятно. Вроде хорошо бы иметь базовый класс для которого определить все возможные методы и для его потомка динамически вызывать конкретный. Но тут проблема создания такого класса. Ведь разбор XML осуществляеться персером
DOMParser parser = new DOMParser();
parser.parse((new File(p_FileName)).toURL().toString());
doc = parser.getDocument();
...
Рейтинг: 0 / 0
Как динамически вызвать метод с параметрами
    #32159663
Ekuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
осмелюсь поделиться собственным опытом соединения логики, выполненной на компилированных методах, с логикой ,загружаемой во время исполнения.
я для этого использую базовое ядро машины языка Prolog (интерпретатор) совместно с базовыми классами Java. при этом хорошо подходят именно те реализации Prolog - машина которых также реализована на java.
Таким образом появляется возможность загружать интерпретируемый код языка Prolog(predicates) во время исполнения java классов.
--
вообще существует ряд реализаций языков интерпретаторов на базе Java
см. http://grunge.cs.tu-berlin.de/~tolk/vmlanguages.html
--
...
Рейтинг: 0 / 0
Как динамически вызвать метод с параметрами
    #32159774
Aion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Oracle_Developer


Проблемы
1) Как вызвать метод. Вроде понятно где копать. Но как проектировать не понятно. Вроде хорошо бы иметь базовый класс для которого определить все возможные методы и для его потомка динамически вызывать конкретный. Но тут проблема создания такого класса. Ведь разбор XML осуществляеться персером
DOMParser parser = new DOMParser();
parser.parse((new File(p_FileName)).toURL().toString());
doc = parser.getDocument();


Как вызвать метод, приведено выше.
Вообще-то файл настроек у Вас должны явно указывать, я думаю, что и как делать, типа: класс, имя метода,параметры...
как пример:
a.conf:
<do on-node="Test">
<class name="x.TestContructor">
<method name="produce">
<param name="nodeName" type="string"/>
</method>
</class>
</do>
(
public class TestContructor extends AbstractConstructor {
public TestContructor(){
}
public void produce(String nodeName) {
}
}
)

Дальше, зачем определять все возможные методы???
У Вас же там все происходит в пределах нода, или как? Вот его и надо передавать (при условии что там есть необходимая информацмя) А если еще есть типа второстепеные вещи, то думаю, сделать типа context'a (т.е. например TestConstructor должен получить доступ к каким-нибудь глобальным объектам)
Вот.
Далее, ну и что разбирается парсером?
В этом то какая проблема?
Кстати вопрос еще, что будет лучше использовать: DOM ili SAX.
Это уже зависть от того что нужно TestContructor'u...
В итоге, мне покрайне мере не полностью ясна картина, т.е. что вообще нужно. Могли бы поконкретней, тогда можно уже что-то более реальное предложить.
...
Рейтинг: 0 / 0
Как динамически вызвать метод с параметрами
    #32160033
Oracle_Developer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да в файле указываеться Класс,Метод,Параметры.

"Дальше, зачем определять все возможные методы???
У Вас же там все происходит в пределах нода, или как? "

А как не определять напрмер
<Class1>
<Method Name="Method1">
<Parameter Name="Date" Value="02/02/2003"/>
</Method>
</Class1>
<Class2>
<Method Name="Method2">
<Parameter Name="Date" Value="02/02/2003"/>
</Method>
</Class2>

Нужно будет потом вызвать для Class1 - Method1. Для Class2 - Method2.

Как я понимаю вы предлогаете ввести базовый класс и все объекты XML-документа т.е все дерево перевести в дерево где узлами будут потомки этого класса. И при обходе смотреть файл настройки для данного класса и вызывать метод?

только вот это не понятно
public class TestContructor extends AbstractConstructor {
public TestContructor(){
}
public void produce(String nodeName) {
}
}
)

у меня ведь список классов не фиксирован. фиксированы только методы. Классы можно добавлять на ходу.Спасибо.
...
Рейтинг: 0 / 0
Как динамически вызвать метод с параметрами
    #32160074
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vspomnil!

http://jakarta.apache.org/commons/index.html

digester

http://jakarta.apache.org/commons/digester.html

Poxozhe, eto to chto doktor propisal.

JJ
...
Рейтинг: 0 / 0
Как динамически вызвать метод с параметрами
    #32161830
Aion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Oracle_Developer
Да в файле указываеться Класс,Метод,Параметры.
Ясненько.

"Дальше, зачем определять все возможные методы???
У Вас же там все происходит в пределах нода, или как? "


А как не определять напрмер
<Class1>
<Method Name="Method1">
<Parameter Name="Date" Value="02/02/2003"/>
</Method>
</Class1>
<Class2>
<Method Name="Method2">
<Parameter Name="Date" Value="02/02/2003"/>
</Method>
</Class2>


Нужно будет потом вызвать для Class1 - Method1. Для Class2 - Method2.
Как я понимаю вы предлогаете ввести базовый класс и все объекты XML-документа т.е все дерево перевести в дерево где узлами будут потомки этого класса. И при обходе смотреть файл настройки для данного класса и вызывать метод?

Да, базовый класс ( или интерфейс) при условии что Вы будите использовать какой-либо контекст и сам ноде Вам нужен в качестве источника данных.

Если же сами классы и вся логика несвязана с обрабатываемым нодом (как источником данных), то конечто, любые классы, любые методы.
При этом, безусловно ненужен никакой базовый класс.
Другими словами Вы определяете триггер на определенный нод и все.

Нет, дерево ненадо переводить никуда.
Просто определить, когда класс + метод(ы) будут вызываться, т.е. маппинг.

javajdbc предложил уже готовый продукт, что сообственно digester и делает.
Маппинг между ноде и тем что нужно выполнить, над етим ноде и все.


только вот это не понятно
public class TestContructor extends AbstractConstructor {
public TestContructor(){
}
public void produce(String nodeName) {
}
}
)

Здесь типа базовый класс...

у меня ведь список классов не фиксирован. фиксированы только методы. Классы можно добавлять на ходу.Спасибо.

P.S.

В принципе это очень все похоже на XSL :-))
xml:
<Customer id="1">
<Email address="go2null" prefered="true">
</Customer>

config:

<template match="/Customer/Email">
<x:class name="EmailService">
<x:method name="sendEmail" value="@address"/>
</x:class>
<template>
...
Рейтинг: 0 / 0
Как динамически вызвать метод с параметрами
    #32186937
George_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если правильно понял, что 1.4 поддерживает загрузку классов по URI
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как динамически вызвать метод с параметрами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]