Pages: [1]   Go Down
Print
Author Topic: casting  (Read 1229 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Chuck_son
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.583



WWW
« on: 26-02-2011, 09:52:50 »

Exception in thread "main" java.lang.ClassCastException: interfaccia cannot be cast to tabella


eppure interfaccia è la classe madre , come mai?
Logged

Aliens Exist
Chuck_son
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.583



WWW
« Reply #1 on: 26-02-2011, 10:08:24 »

ho risolto , ma non ho capito perchè devo fare:

interfaccia in;

in=new tabella();

e poi devo fare lo stesso il casting

((tabella)in).faiQualcosa();
Logged

Aliens Exist
SkyWolf
Matricola
*
Offline Offline

Gender: Male
Posts: 90



« Reply #2 on: 26-02-2011, 10:41:51 »

ho risolto , ma non ho capito perchè devo fare:

interfaccia in;

in=new tabella();

e poi devo fare lo stesso il casting

((tabella)in).faiQualcosa();

Perchè tu dichiari l'oggetto in di tipo Interfaccia, e lo inizializzi come Tabella,
quando lo vai a richiamare, l'oggetto viene visto come di tipo Interfaccia e pur esistendo in memoria gli attributi e i metodi specifici di Tabella, relativi allo stesso in, non vengono mostrati.
Effettuando il casting tu dici apertamente che l'oggetto (seppur di tipo Interfaccia) contiene anche la roba di Tabella (perchè inizializzato così) e quindi potrai utilizzarla.
Logged

Danilo Catalano.
Chuck_son
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.583



WWW
« Reply #3 on: 26-02-2011, 11:05:24 »

ma perche allora non funziona se io faccio:

((tabella)in).faiQualcosa();




se faccio il casting in questo modo mi da quell'errore.

quindi devo "riferimentare"   la variabile:  'in' a tabella?
Logged

Aliens Exist
Chuck_son
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.583



WWW
« Reply #4 on: 26-02-2011, 11:07:04 »

per esempio nelle seconde prove facevamo solo il casting...

cosa mi sfugge?
Logged

Aliens Exist
SkyWolf
Matricola
*
Offline Offline

Gender: Male
Posts: 90



« Reply #5 on: 26-02-2011, 12:04:33 »

per esempio nelle seconde prove facevamo solo il casting...

cosa mi sfugge?

Temo dunque di non aver capito il tuo problema pray
Tu hai detto che così:

ho risolto , ma non ho capito perchè devo fare:

interfaccia in;

in=new tabella();

e poi devo fare lo stesso il casting

((tabella)in).faiQualcosa();

hai risolto. Il che è ragionevole e ti ho spiegato il perchè nel post sopra.
Volevi forse capire la differenza tra:
Code:
interfaccia in;
in=new tabella();
((tabella)in).faiQualcosa();

e:
Code:
interfaccia in;
in=new interfaccia();
((tabella)in).faiQualcosa();

?
Logged

Danilo Catalano.
Chuck_son
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.583



WWW
« Reply #6 on: 26-02-2011, 12:16:31 »


Code:
interfaccia in;
in=new interfaccia();
((tabella)in).faiQualcosa();

?

esattissimo... nelle seconde prove non facevamo semplicemente cosi?

cioè mica referenziavamo la classe madre ad una figlia..
facevamo solo il casting
Logged

Aliens Exist
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #7 on: 26-02-2011, 13:18:02 »

La JVM ha ragione.

L'eccezione lanciata a runtime è legittima e corretta, poiché un oggetto di tipo tabella è certamente di tipo interfaccia, tuttavia un oggetto referenziato in una var. di classe interfaccia non è detto che sia anche una tabella.

Nel codice appena sopra, infatti, non è assolutamente così.

Il down-casting è lecito solo se l'oggetto, quando fu creato, era già della classe verso cui vuoi down-castare (o una delle classi della sua discendenza).

Prova tu stesso a scrivere:
Code:
System.out.println ("L'oggetto in è di classe tabella? " + (in instanceof tabella) + ".");

Ciao .
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
Chuck_son
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.583



WWW
« Reply #8 on: 26-02-2011, 13:23:05 »


Il down-casting è lecito solo se l'oggetto, quando fu creato, era già della classe verso cui vuoi down-castare (o una delle classi della sua discendenza).


capito quindi    'in'    doveva essere gia di tipo tabella.  nono . capito capito grazie   
Logged

Aliens Exist
Pages: [1]   Go Up
Print
Jump to: