Newsgroup: it.comp.java
Titolo: C'entra qualcosa l'overloading??? HELPPP ! !

Cari frequentatori di questo bel newsgroup... vi chiedo una cosa che a
voi sembrerà sciocca ma che per me è importante...
Come faccio a implementare in Java  un metodo che mi possa restituire
(return) oggetti di tipo diverso (a seconda di certe condizioni
interne) ?
Mettiamo che il metodo Pinco() debba potermi restituire un oggetto
"Vector" oppure un oggetto "mystructure". Quando chiamo questo metodo,
come faccio a sapere quale struttura mi verrà restituita? 
Non posso chiamare il metodo così 
Vector miooggetto = pippo.Pinco()
perché non so se "miooggetto" sarà un oggetto Vector o un oggetto
Mystructure
Ma allora come faccio a chiamare il metodo??
E quando implemento il metodo Pinco(), cosa devo scrivere nella prima
riga del metodo al posto di XXXXX, se Pinco deve essere in grado di
restituire oggetti di tipo diverso?
public XXXXX Pinco() { ......
........................
........................      }
Tenete presente che NON posso fare una chiamata di Pinco() passandogli
un parametro o un flag che indichi il tipo da restituire, perché il
tipo dell'oggetto da restituire deve PROPRIO ESSERE DECISO dal metodo
Pinco() al suo interno....
Vi ringrazio dei vostri pareri, che attendo fiducioso
Ciao a tutti da Luca
 

Pinco() al suo interno....
Pinco sceglie quale oggetto ritornare. Questa routine puoi usarla a priori
per determinare il tipo di oggetto che deve ritornare e con un semplice
controllo booleano vedi quale funzione richiamare, quella che ritorna vector
o quella che ritorna myStructure.
----------------------------------------------------------------------------
-----------------------------------------------------------------------
Windows 98: 16 Millions lines of code that will never be debugged
----------------------------------------------------------------------------
-----------------------------------------------------------------------
bo...@iol.it

 
-- 
	!-----------------------------------------------!
	! Giovanni Petrucciani				!	
	! 
giovanni.p...@iol.it
			!
	!-----------------------------------------------!

interne) ?
Tutte le classi Java derivano dalla classe Object, per cui basta
dichiarare il metodo come
Object myMethod()
e potrŕ tornare tutto quello che vuole.
Per sapere che oggetto hai ottenuto da quel metodo, puoi invocare su
di esso il metodo getClass().
--
Bye,
  Dario
ICQ: 
http://wwp.mirabilis.com/11871099
Remove anti-spam from e-mail address

Ciao a tutti da Luca
Direi che Pinco puó ritornare un Object (supertipo di tutti gli
oggetti), tu assegni il valore restituito da Pinco ad un Object:
Object returned = pippo.Pinco()
Quindi controlli con instanceof di *quale* classe é istanza l'oggetto
"returned":
if(returned instanceof Vector) 
 { // fa qualcosa...
 } else if(returned instanceof MyStructure)
            { // fa qualcos'altro...
            }
L'overloading dei metodi non c'entra in quanto non puó essere
effettuato in base al tipo restituito dal metodo ma soltanto in base
ai tipi passati come parametri al metodo.
Ciao!
Matteo!!!

On Wed, 03 Mar 1999 16:55:49 GMT, 
lro...@lycosmail.com
 (L. Rossi)
wrote:
 
Grazie a tutti per i consigli che mi avete dato!
Ancora grazie e ciao.

 interne) ?
NON si puo' - come in C++ e nella maggior parte dei linguagg a typecheck
stretto, il tipo *statico* ritornato deve essere sempre lo stesso.
Nota che il tipo *dinamico* puo' essere diverso, il che significa che, se
il tuo metodo ritorna oggetti di classe X puoi
- se X e' una classe, ritornare (anche) un oggetto di qualunque sottoclasse
di X - se X e' un'interfacca, ritornare qualunque oggetto che implementi X
Saluti,
 Cris
-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/
       Search, Read, Discuss, or Start Your Own