Newsgroup: it.comp.java
Titolo: da Object a String mi mette il carattere _

Ho un metodo che ***per forza*** restituisce un Object come risultato.
Quel metodo restituisce come risultato un numero.
Chi riceve il risultato come fa a convertire quell'Object in un numero? Se 
il numero era per esempio 5, se chi riceve il risultato usa toString ottiene 
la stringa _5.
Qual è il metodo corretto per leggere quel numero?
Ho provato con return new Integer(...) ma poi è inutile perchè chi riceve il 
risultato non può fare il cast (Interger)obj 


fammi capire perchè non è per niente chiaro...
tu hai un metodo che ritorna un numero come Object, quindi tornerà
qualcosa del tipo new Integer(mioIntero);
Se chi chiama il metodo sa che ritorna un numero può fare direttamente
il cast...
in ogni caso potresti spiegare meglio la cosa?

 ha scritto nel messaggio 
news:1157380198.7...@b28g2000cwb.googlegroups.com...


> Integer risposta=(Integer)func1(...); DA ERRORE
public static Object function(int number)
{
return new Integer(number);
}
public static void main(String[] args)
{
Object obj = function(5);
System.out.println(obj);
Integer integer = (Integer) obj;
System.out.println(integer.intValue());
}
Da me funzia perfettamente

 Integer risposta=(Integer)func1(...); DA ERRORE
Che tipo di errore?
Saluti
CarMas

 Che tipo di errore?
java.lang.ClassCastException: java.lang.String

 java.lang.ClassCastException: java.lang.String
Beh allora questo metodo func1 non ritorna un Integer ma una String... ma tu 
non puoi accedere al metodo e vedere com'e' fatto?
Dopo che hai fatto Object risposta=func1(..); prova a fare una println di 
risposta e vedi se te la stampa gia' con _ davanti.
Saluti
CarMas

 risposta e vedi se te la stampa gia' con _ davanti.
si me la stampa con _

 tu non puoi accedere al metodo e vedere com'e' fatto?
Il metodo so come è fatto, ha obbligatoriamente la signature di questo tipo 
Object func1 (...)
e poi io all'interno faccio un return di un risultato. Quindi qual è il 
metodo migliore per restituire il risultato in moto che poi sia facilmente 
leggibile? Io ho inserito return new Integer 

 leggibile? Io ho inserito return new Integer
Il metodo è perfetto!
Il problema è che se fai un cast ad Integer e ti genera una
ClassCastException dicendoti che non puoi "castare" una stringa ad
Integer, significa che dentro il metodo te ritorni una stringa e non un
Integer!
Non è che dentro func1 fai una cosa del tipo:
return new Integer(integer).toString();
e cmq il carattere"_" non si capisce da dove viene...

e cmq il carattere"_" non si capisce da dove viene...
Io dentro al metodo eseguo return new Integer, poi però c'è un framework di 
mezzo che consegna i messaggi, e quindi forse li trasforma?
Io pensavo che il carattere "_" fosse predefinito di Object 

 Io pensavo che il carattere "_" fosse predefinito di Object
perň chi riceve il messaggio deve per forza aspettarsi un Object, quindi č 
un Object. 

 un Object.
In java tutto tranne i tipoi primitivi sono Object... quindi sul fatto
che è un Object non ci sono dubbi!
A sto punto il fantomatico framework probabilmente ti ritornerà una
stringa a cui appende il carattere '_'.
Per convertire una stringa in numero devi usare Integer.parse(string),
ma prima devi rimuovere il '_'

 un Object.
Ci si aspetta anche che il programmatore abbia conoscenza base dei
concetti di ereditarietà.
Object è la classe base implicita di tutti i tipi (esclusi i nativi).
Tutte le classi derivano da Object.
Secondo le regole dell'ereditarietà, un reference di un certo tipo
può contenere istanze concrete di tipo uguale o derivato. Di
conseguenza, un reference di tipo Object può contenere istanze
concrete di qualsiasi tipo (esclusi ancora i nativi).
Quindi, un metodo che ritorna un object può in realtà ritornare
qualsiasi tipo di oggetto.
Ora, se tu by design sai a priori quale tipo ritorna puoi fare un cast
a diritto, altrimenti ti devi sbattere di controllare il tipo a runtime
prima di fare il cast appropriato.

 ha scritto nel messaggio
news:1157446575....@i3g2000cwc.googlegroups.com...
Mauro_ ha scritto:
