PDA

Visualizza la versione completa : [java] Chiamata Di Un Metodo A Runtime


ZebiloN
20-02-2004, 19:52
Salve a tutti,
spero che qualcuno mi possa aiutare.

Sto sviluppando un agente particolare per una piattoforma ad agenti
sviluppata in Java.
Tale piattaforma gestisce lo scambio di messaggi tra un agente e l'altro.
l'arrivo di un particolare messaggio in XML il mio agente deve caricare una
classe particolare che non devo implementare io, cioè non ne conosco il nome
ne gli attributi.
Il nome è contenuto tra due tag (che realizzo con un opportuno classLoader)
poi nel tag successivo ho gli attributi ke devo inizializzare quindi
richiamare un metodo "init(attrubuto1,.....,attributoN)" della classe
caricata a runtime
Ad esempio
<XMLCONTENT>
<CLASSE>
<NOME_CLASSE> prova.class </NOME_CLASSE>
<ATTRIBUTI> init(attr1,......,attrN) </ATTRIBUTI>
</CLASSE>
</XMLCONTENT>

Il problema sta nel fatto che il parsing XML mi restituisce una stringa con
il contenuto compreso tra due tag quindi avrò:

String attrib = "init(attr1,......,attrN)"

quindi come faccio a effetuare la chiamata a questo metodo?
C'è qualcuno ke può aiutarmi?
C'è una soluzione migliore?

Ringrazio atticipatamente x l'attenzione!!

anx721
20-02-2004, 20:21
Non capisco se il tuo problema è ricavare i nomi dei parametri dalla stringa o effettuare la chiamata al metodo passandogli i parametri. Nel primo caso devi fare un parsing della stringa splittandola rispetto alle parentesi e le virgole, nel secondo caso devi usare le funzionalità messe a disposizione dal package java.lang.reflect e dalla classe Class, ad esempio dalla classe Class puoi ottenere un oggetto Method che rappresenta un metodo di una classe e su tale oggetto Method puoi invocare il metodo invoke(Object obj, Object[] args) in cui obj rapresenta l'oggetto su cui il metodo sarò invocato con parametri rappresentati da args, per ulteriori informazioni sul package e su Class puoi far riferimento alla documentazione online della sun,

ciao.

ZebiloN
21-02-2004, 12:58
Il problema è proprio quello di passare i parametri al metodo...
Tale metodo verrà scritto dall'utente-programmatore quando dovrà scrivere la sua apposita classe, cioè una specie di plug-in...

Anche io avevo pensato al parsing della stringa ma volevo sapere se alternativamente potevo trasformare il contenuto della stringa alla chiamata ad un metodo!!

Comunque ora vedo cosa riesco a fare utilizzando come hai detto tu l'oggetto Method.

Grazie mille...

Ciao!

Loading