Гость
Форумы / Java [игнор отключен] [закрыт для гостей] / Как динамически вызвать метод с параметрами / 12 сообщений из 12, страница 1 из 1
08.05.2003, 17:03
    #32156369
Oracle_Developer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как динамически вызвать метод с параметрами
1 Наименование метода, который надо вызвать для данного класса определяеться во время выполнения программы ( из файла). Подскажите как это сделать

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

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

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

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

2. javac :-)))
...
Рейтинг: 0 / 0
09.05.2003, 20:34
    #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
14.05.2003, 09:29
    #32159132
Саша Питерский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как динамически вызвать метод с параметрами
Developer !

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

Можем обсудить идеи реализации
...
Рейтинг: 0 / 0
14.05.2003, 13:33
    #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
14.05.2003, 14:50
    #32159663
Ekuku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как динамически вызвать метод с параметрами
осмелюсь поделиться собственным опытом соединения логики, выполненной на компилированных методах, с логикой ,загружаемой во время исполнения.
я для этого использую базовое ядро машины языка Prolog (интерпретатор) совместно с базовыми классами Java. при этом хорошо подходят именно те реализации Prolog - машина которых также реализована на java.
Таким образом появляется возможность загружать интерпретируемый код языка Prolog(predicates) во время исполнения java классов.
--
вообще существует ряд реализаций языков интерпретаторов на базе Java
см. http://grunge.cs.tu-berlin.de/~tolk/vmlanguages.html
--
...
Рейтинг: 0 / 0
14.05.2003, 16:15
    #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
14.05.2003, 20:56
    #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
14.05.2003, 23:10
    #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
16.05.2003, 14:43
    #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
19.06.2003, 22:02
    #32186937
George_A
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как динамически вызвать метод с параметрами
Если правильно понял, что 1.4 поддерживает загрузку классов по URI
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как динамически вызвать метод с параметрами / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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