AppletTalk.com Forum Index AppletTalk.com
Java discussions newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Assegnazione dinamica di oggetti

 
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian)
View previous topic :: View next topic  
Author Message
theLuke
Guest





PostPosted: Tue Jun 28, 2005 3:10 pm    Post subject: Assegnazione dinamica di oggetti Reply with quote



Ciao a tutto il NG,
ho un problema che riguarda il casting di oggetti e loro assegnamento.
Mi spiego. Nel mio codice ho due dati:
- Object contenente un oggetto (nativo del JDK o custom)
- String contenente il tipo di oggetto specifico (quello del punto
precedente per intenderci "String", "Float", "Exception"..).

Devo ricreare questi oggetti. Ho pensato alla reflection e, utilizzando il
metodo forName della classe Class ottengo un oggetto che poi "casto"
utilizzando il metodo cast(). Tutto ok, ma ora come posso assegnare in
maniera dinamica questo oggetto castato ad un riferimento del tipo
corretto?

Esempio:
Ho un Object pippo che contiente un riferimento ad una stringa;
Ho una stringa (String valueType) con valore "java.lang.String" (l'esatto
tipo di pippo);

Class c = Class.forName(valueType);
c.cast(pippo);

ora come assegno questo risultato ad un oggetto specifico (nel mio caso
String).

Tutto questo perchè devo richiamare dei metodi in maniera dinamica
passando questi oggetti.

Ho provato a fare anche questo:

nomeMetodoCheAccettaStringComeParametro((c.getClass())pippo);

quindi a effettuare un cast di pippo in maniera dinamica ma non ha
funzionato.

So che la domanda è un po' incasinata e forse non sono stato molto chiaro,
ma ringrazio davvero tutti quelli che mi daranno una mano!!

Grazie a tutti

Luca

--

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad [email]abuse (AT) newsland (DOT) it[/email]


Back to top
{2Nd+BESt}
Guest





PostPosted: Tue Jun 28, 2005 5:00 pm    Post subject: Re: Assegnazione dinamica di oggetti Reply with quote



non so se ho capito,
ma potrebbe tornarti utile la parola chiave instanceof
che ti permette di stabilire il tipo di oggetto.
Es:

class Perepe{
...
}

in un metodo avendo un oggetto particolare
puoi verificare per esempio

Object pOggetto = new Perepe(...);

if (pOggetto instanceof Perepe)
{
Perepe tmp = (Perepe)pOggetto;
}
....
ecc ecc


--
{2Nd+BESt}
-----------------------------------
never underestimate human stupidity
Back to top
theLuke
Guest





PostPosted: Tue Jun 28, 2005 5:16 pm    Post subject: Re: Assegnazione dinamica di oggetti Reply with quote



{2Nd+BESt} ha scritto:

Quote:
non so se ho capito,
ma potrebbe tornarti utile la parola chiave instanceof
[CUT]


Quote:
Object pOggetto = new Perepe(...);

if (pOggetto instanceof Perepe)
{
Perepe tmp = (Perepe)pOggetto;
}

Non credo...perchè io non so nemmeno che esiste la classe Perepe!!
Io ricevo un oggetto che potrebbe essere....qualunque cosa e il nome di un
metodo che riceve come parametro quell'oggetto "qualunqe cosa"...lo scopo
è quello di chiamare questo metodo passandogli questo oggetto.

Cmq grazie infinite per l'intervento!!

Ciao

Luca




--

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad [email]abuse (AT) newsland (DOT) it[/email]



Back to top
Ferreri Gabriele
Guest





PostPosted: Wed Jun 29, 2005 7:03 am    Post subject: Re: Assegnazione dinamica di oggetti Reply with quote


Forse è una cosa stupida, ma perchè invece di tutto questo non passi al
metodo un Object e poi il metodo si occupa di fare il Cast???

"theLuke" <fafiox (AT) libero (DOT) it> ha scritto nel messaggio
news:d9s0kl$img$1 (AT) news (DOT) newsland.it...
Quote:
{2Nd+BESt} ha scritto:

non so se ho capito,
ma potrebbe tornarti utile la parola chiave instanceof
[CUT]

Object pOggetto = new Perepe(...);

if (pOggetto instanceof Perepe)
{
Perepe tmp = (Perepe)pOggetto;
}

Non credo...perchè io non so nemmeno che esiste la classe Perepe!!
Io ricevo un oggetto che potrebbe essere....qualunque cosa e il nome di un
metodo che riceve come parametro quell'oggetto "qualunqe cosa"...lo scopo
è quello di chiamare questo metodo passandogli questo oggetto.

Cmq grazie infinite per l'intervento!!

Ciao

Luca




--

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad [email]abuse (AT) newsland (DOT) it[/email]







Back to top
iomcenter-giginus@yahoo.i
Guest





PostPosted: Wed Jun 29, 2005 7:26 am    Post subject: Re: Assegnazione dinamica di oggetti Reply with quote

Cioe' se ho capito, tu vorresti fare una 'roba' del genere:?
String tipo = "java.lang.Integer";
Object intero = new Integer(4);
tipo nuovoOggetto = (tipo)intero;
Ho capito il tuo pensiero?
Ovvero vuoi che il cast e la tipizzazione della variabile siano
dinamici?
Beh, in java non e' possibile, il compilatore <deve> sapere esattamente
di che tipo (o classe) è una variabile a tempo di compilazione, e se
tu che scrivi il codice non lo puoi sapere allora devi dichiararla
Object.
Qualcosa di simile lo puoi fare con instanceof, oppure con la
reflection, ma allora devi conoscere anche i nomi dei metodi da
chiamare sull'oggetto e la lista dei parametri.
Es:
String tipo = "java.util.ArrayList";
Object obj = new ArrayList();
String metodo = "add";
Object[] listaParametri = {"abc"};
if(obj.getClass().getName().equals(tipo)){
Method m = obj.getClass().getMethod(metodo);
m.invoke(obj,listaParametri);
}
Anche se bisognerebbe capire perche' devi incasinarti cosi' la vita....

}

Back to top
theLuke
Guest





PostPosted: Wed Jun 29, 2005 11:48 am    Post subject: Re: Assegnazione dinamica di oggetti Reply with quote

[email]iomcenter-giginus (AT) yahoo (DOT) it[/email] ha scritto:

Quote:
Cioe' se ho capito, tu vorresti fare una 'roba' del genere:?
String tipo = "java.lang.Integer";
Object intero = new Integer(4);
tipo nuovoOggetto = (tipo)intero;
Ho capito il tuo pensiero?
[CUT]

Sì, hai centrato esattamente il problema!

Quote:
Beh, in java non e' possibile, il compilatore <deve> sapere esattamente
[CUT]

...lo temevo!!
Quote:
Qualcosa di simile lo puoi fare con instanceof, oppure con la
reflection, ma allora devi conoscere anche i nomi dei metodi da
chiamare sull'oggetto e la lista dei parametri.
[CUT]
Anche se bisognerebbe capire perche' devi incasinarti cosi' la vita....

eheh...hai PERFETTAMENTE ragione! Il problema è che devo effettuare il
wrapping di una "cosa" non sviluppata da me e soprattutto sviluppata (non
voglio peccare di presunzione) in maniera non molto pulita e ordinata.
Insomma...devo mettere mano a codice non mio, cercare di wrapparlo in
un'architettura più scalabile e visto che le tempistiche , come sempre,
sono strettissime, non c'è possibilità almeno per i primi rilasci di
riscrivere il codice "incriminato".

Cmq, grazie davvero per il tuo intervento, malgrado le brutte notizie mi
ha dato una delucidazione...NON SI PUO' FARE!

Ciao e grazie ancora

Luca


--

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad [email]abuse (AT) newsland (DOT) it[/email]



Back to top
iomcenter-giginus@yahoo.i
Guest





PostPosted: Wed Jun 29, 2005 4:01 pm    Post subject: Re: Assegnazione dinamica di oggetti Reply with quote

Ovviamente dato che non so precisamente com'e' la situazione potrebbe
darsi che quello che ti diro'...
a) non serve
b) ci hai gia' pensato e l'hai scartato...
pero'
Non potresti creare una serie di interfacce che espongono i metodi che
vuoi "wrappare",
poi per quanto riguarda l'implementazione ti fai delle classi che
implementano tali interfacce e che nascondono al loro interno tutto il
porcaio necessario (magari anche serie giganti di if(instanceof...)).
E decidere a runtime quale classe usare di volta in volta
tipo:
interface WrapInterface{
public int metodoDaEsporre(int a,string b,ArrayList c);
etc.
}
public class WrapImpl_1 implements WrapInterface{....}
public class WrapImpl_2 implements WrapInterface{....}
e poi nel codice
string classeDaUsare = "WrapImpl_1";
WrapInterface i =
(WrapInterface)Class.forName(classeDaUsare).newInstance();
i.metodoDaEsporre(....)
e a questo punto hai a compile time il type checking sui parametri in
ingresso e in uscita dei metodi...
Io ho detto..
poi magari non si applica al tuo caso...

Back to top
{2Nd+BESt}
Guest





PostPosted: Thu Jun 30, 2005 9:55 am    Post subject: Re: Assegnazione dinamica di oggetti Reply with quote

e provare a tirare in ballo il ClassLoader, o meglio
crearti una classe che estende/implementa il ClassLoader,
o solamente vedere se e' possibile lavorarci su?

non so dirti di piu',
prova a studiarlo un po....


--
{2Nd+BESt}
-----------------------------------
never underestimate human stupidity
Back to top
Display posts from previous:   
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.