PDA

View Full Version : Java: Class e dintorni


nodep
22-10-2002, 13:26
Salve a tutti,
la questione che vorrei poter risolvere riguarda
la "reflection" di Java. So' che e' possibile con
tale tecnica ricavare informazioni sullo stato di
una classe venendo a sapere quali campi dichiara
e quali attributi e costruttori possiede, ma il tutto si
"ferma" li, nel senso che io vorrei anche sapere
cosa "c'e' dentro ai metodi" (cioe' come sono stati
implementati) ed a quanto mi par d'aver capito
non e' possibile. Mi sbaglio? C'e' qualche modo
alternativo di "perlustrare" una classe fin dentro
ai suoi metodi? (anche solo per sapere quali
campi/oggetti sono utilizzati...)
Grazie.

cionci
22-10-2002, 14:21
Decompilandola... Fai una ricerca...di recente è stato postato un programma che decompila un file .class...

kingv
22-10-2002, 14:28
Originariamente inviato da cionci
[B]Decompilandola... Fai una ricerca...di recente è stato postato un programma che decompila un file .class...


se inizi a rispondere pure ai thread su java qui rimane poco da fare :D :D

cionci
22-10-2002, 14:41
Va bene non lo farò più :p :D

nodep
22-10-2002, 20:29
ehm... io vorrei che il tutto avvenisse run-time, cioe'
poter "indagare" su come son fatti dentro i metodi
mentre il mio programma gira. Comunque, a dirla
tutta, la mia vera necessita' sarebbe: come faccio
a sapere quali ".class" ha bisogno un dato ".class"
per funzionare? (non so se mi son spiegato...)
Grazie.

kingv
23-10-2002, 08:33
Originariamente inviato da nodep
[B]ehm... io vorrei che il tutto avvenisse run-time, cioe'
poter "indagare" su come son fatti dentro i metodi
mentre il mio programma gira. Comunque, a dirla
tutta, la mia vera necessita' sarebbe: come faccio
a sapere quali ".class" ha bisogno un dato ".class"
per funzionare? (non so se mi son spiegato...)
Grazie.



si ti sei spiegato ma continuo a non capire la necessità.

se nel codice hai paura di istanziare una classe che non e' in classpath (e cio' e' possibile solo se lo fai dinamicamente con la reflection, altrimenti il tuo codice non compilerebbe nemmeno) metti l'istanizazione in un cpostrutto try/catch che catturi una ClassNotFoundException, e nel catch gestisci il problema.

nodep
23-10-2002, 12:39
In pratica poi nel "catch" come dovrei fare a gestire la cosa?
Avevo pensato di scrivere un ClassLoader personalizzato
che si procura il ".class" da dove e' arrivato l'oggetto che ne
ha bisogno, ma prima voleva sapere se nn c'era un modo
di spedire tutti i ".class" a destinazione prima di spedire
l'istanza dell'oggetto (e' vero che comunque dovrei caricare
i ".class" che mi arrivano, prima dell'arrivo della istanza,
con il ClassLoader...). Tutto questo riguarda un'applicazione
che spedirebbe, ad un servizio web gestito da ApacheSoap
e Tomcat, un oggetto che e' l'estensione di quello che il servizio
accetterebbe (ho scritto un (de)serializzatore custom) per
cui a livello di unmarshaling dovrei istanziare una classe
di cui non ho i ".class" e che quindi o se li procura con un
ClassLoader custom, o li ha gia' da qualke parte xke' glieli
ha spediti prima il client.
Ecco, problema non da niente... spero sia chiaro.
Grazie.

nodep
24-10-2002, 09:18
Mi accontenterei anke solo di una conferma (o smentita)
al fatto che ci sia un modo di sapere quali ".class"
necessita un dato ".class"...
grazie

nodep
30-10-2002, 10:53
Nel caso a qualcun altro potesse esser utile: la questione che ho
tirato in ballo non e' risolvibile, ho spulciato un po' dappertutto
e non si puo' indagare su come siano fatti i metodi con la
reflection.
Ciao a tutti. :)