Newsgroup: it.comp.java
Titolo: Salve

Salve a tutti,
Ho usato fino ad ora VB .NET, ma mi sto avvicinando
a Java, ma sono subito incappato in un problema
che mi sta facendo rimpiangere la scelta... comunque
volevo chiedervi se esiste un modo di forzare il tipo di una
variabile derivante per esempio da un Collections non tipizzata??
Esempio in .NET
dim a as String
a = Ctype(MioOgettoDerivanteDaUnaCollections, string).substring(5)
cosi facendo tratterà MioOgettoDerivanteDaUnaCollections come una
stringa
o almeno ci prova .
Grazie Mille.

  ((MioOggetto)(list.get(x))).metodoMioOggetto();
Avevo già provato una cosa simile ma se mi dici che si fa così,
riprovo con più convinzione, cercando di trovare dove sbaglio.
Grazie Mille


non conosco VB e Ctype, ma e' per caso assimilabile ad un hard-cast di
Delphi?
Non esiste nessun costrutto built-in che fa una cosa simile in Java.
Puoi pero' invocare substring via reflection se il metodo esiste.
Ma e' macchinoso.
Non e' che stai abusando di quel concetto?
In sostanza, perche' devi fare una cosa simile?

 Puoi pero' invocare substring via reflection se il metodo esiste.
Lascia stare quanto detto su reflection...
la cosa miegliora e' castare al tipo giusto e invocare il metodo, come
ti e' stato suggerito.

 wrote:

il metodo Substring l' ho messo per esempio,
il mio problema è che devo controllare un proprietà
di una serie di oggetti (grafici) che stanno all' interno di un
jPannel
il numero degli oggetti non è costante viene letto all' inizio del
programma
quindi ho pensato di :
creare un Vector di oggetti
riempirlo con i controlli nel pannello
usare un iterator
e su ogni oggetto reso dall' iterartor
controllare questa proprietà
Questo perlomeno è l' approccio che suggerisce .NET


Che proprietà? Tipo degli oggetti?
E' plausibile che se la proprieta' e' la stessa derivino dallo stesso
tipo. In questo caso casta al tipo base che ha la proprieta' e accedi
al metodo.
Se non e' cosi' ti rimane la reflection oppure puoi sempre usare if
else con isntaceof:
if (obj instanceof T1) {
  ((T1)obj).getProp();
}
else if (obj instanceof T2) {
  ((T2)obj).getProp();
}


Posta il codice e l'errore del compilatore.
-- 
Andrea Francia
http://www.andreafrancia.it/

un hard-cast di Delphi?
Che intendi?

 Che intendi?
form1 := TForm1(form2);

On 19 Giu, 18:22, Andrea Francia

Grazie mille per il vostro aiuto ho cambiato, modalità di approccio
ed ho risolto , comunque volevo fare i complimenti per la
disponibilità,
si vede che questo è un mondo OPENSOURCE!!! :))

 si vede che questo è un mondo OPENSOURCE!!! :))
Non capisco molto la relazione tra disponibilità e mondo OpenSource.
Cmq grazie dei complimenti.
-- 
Andrea Francia
http://andreafrancia.blogspot.com/2008/06/macross-frontier.html

form1 := TForm1(form2);
Sě, so cos'č un cast in Delphi :-) anche perché uso da circa dieci
anni quell'ambiente. Forse ho quotato male. Il fatto č che neanche in
Delphi si puň fare l'operazione richiesta dall'OP, men che meno con un
"hard-cast". Cioč, il compilatore magari ti fa passare le operazioni
tra puntatori, ma sono del tutto illecite a run-time.

 variabile derivante per esempio da un Collections non tipizzata??
per forza non si fa neanche l'aceto :-)
se l'istanza concreta è dello stesso tipo o di una subclass, puoi fare 
un cast esplicito. se non è così la "forzatura" non è consentita. le 
regole dell'ereditarietà riguardo al cast sono chiare.
-- 
? Fino all'anno scorso avevo un solo difetto. Ero presuntuoso.
http://softvalley.blogspot.com
http://www.flickr.com/photos/marko_po/

 tra puntatori, ma sono del tutto illecite a run-time.
Io non sono tanto esperto, anzi per niente. Ho controllato e hai
ragione, pero' certe cose come gli upcast sembra siano possibili e
lecite con questo tipo di istruzione.
Comunque, a questo punto, quel cast  non centra nulla con la domanda
originale.