ciao,
esiste un metodo che non sia il CAST per "forzare" il tipo di una variabile e che non sia deprecato come setClass()...?
grazie
ciao,
esiste un metodo che non sia il CAST per "forzare" il tipo di una variabile e che non sia deprecato come setClass()...?
grazie
La vita sarebbe piu' facile se avessi il codice sorgente!
L'unico altro modo è quello di istanziare un nuovo oggetto utilizzando, laddove predisposti, dei metodi per l'operazione.
Data la tua domanda mi viene da chiederti: non è che la soluzione al tuo problema può risiedere nell'ereditarietà?
Ciao.
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
forse mi sono spiegato male, ti espongo tutto il mio problema...
problema:
io ho bisogno di creare una classe che accetti una Collection composta da n elementi di qualsiasi tipo (io non sono a conoscenza ne del tipo, ne del numero di elementi)...
ora... siccome il contenuto della Collection devo poi andarlo a esportare in un report EXCEL... ho bisogno del tipo degli elementi contenuti in essa per formattare le celle del foglio XLS...
Se hai/avete qualche consiglio... ben venga...
cmq grazie per l'interessamento...
La vita sarebbe piu' facile se avessi il codice sorgente!
perciò hai bisogno di conoscere il tipo di dato
non di cambiarlo
fai con instanceof
if (object instanceof String)
...
else if (object instanceof Number)
...
ma funziona anche facendo una cosa di questo tipo?
codice:... Object element = i.next(); String name = element.getClass().getName(); Class cls = Class.forName(name); Object obj = cls.newInstance(); if(obj instanceof cls) { ... } ...
La vita sarebbe piu' facile se avessi il codice sorgente!
forse obj.getClass().getName().equals(cls.getName())
ma non vedo l'utilità di fare un giro del genere :master:
allora, partendo dal codice che ho postato prima...
come faresti tu?
sono un po' confuso...
e' tutto il giorno che ci sbatto la testa... e non riesco a trovare una soluzione...
La vita sarebbe piu' facile se avessi il codice sorgente!
lo avevo postato
Originariamente inviato da floyd
if (object instanceof String)
...
else if (object instanceof Number)
...
me l'ero perso...
ora provo...
La vita sarebbe piu' facile se avessi il codice sorgente!
Esiste anche una soluzione un po' più articolata e, forse, un o' più elegante:
Costruisci una classe per ciascun tipo di dato che ti interessa. Queste classi implementeranno un'interfaccia di questo tipo:
Magari deriveranno tutte da una superclasse astratta:codice:public interface TipoDato { public int getTipoDato(); }
Così facendo:codice:public abstract class SuperClasse implements TipoDato { public static final int TIPO_1 = 0; public static final int TIPO_2 = 1; public static final int TIPO_3 = 2; ... }
In questo modo, le recuperi dalla Collection:codice:public class PrimoTipo extends SuperClasse { private Tipo t public PrimoTipo(Tipo t) { this.t = t; } public int getTipoDato() { return TIPO_1; } }
Ciao.codice:SuperClasse s = (SuperClasse) collection.get(); switch ( s.getTipoDato() ) { case TIPO_1: case TIPO_2: case TIPO_3: ... }
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza