Modifiche recenti - Cerca:

emi7oP <a href="http://etyxbsmwlbop.com/">etyxbsmwlbop</a>, [url=http://ejkbnyaqouhe.com/]ejkbnyaqouhe[/url], [link=http://iytqgxxmxvee.com/]iytqgxxmxvee[/link], http://ddjproogyauv.com/

TypeChecking

Esercizi sul Type Checking

Autore: Vincenzo Manzoni

Sommario
Piccoli esercizi sulla conversione di tipo in Java, in compilazione e in esecuzione.

Si consideri la seguente gerarchia di classi:

 public class A {}
 public class B extends A {}
 public class C extends B {}

Si scriva, in Java, una conversione di tipo corretta sia in compilazione che in esecuzione.

 C c = new C();
 A a = (B) c;

In fase di compilazione, il compilatore controllerà che (B) sia A oppure un sottotipo di A. In questo caso, come si può vedere dalla gerarchia poco sopra, lo è. Ovviamente c deve essere convertibile in (B).

Si scriva, in Java, una conversione di tipo sbagliata

 B b = (A) c;

In compilazione questa fallisce, perché A non è un sottotipo di B.

Si scriva, in Java, una conversione corretta in compilazione, ma che dia errore in esecuzione.

 List l = new ArrayList();
 l.add(new A()); 
 B b = (B) l.get(0);

Come si può osservare, il compilatore non ha modo di sapere in fase di compilazione se la funzione get() della lista ritorna B o un sottotipo di B. Così lui verifica solamente che a destra il cast sia fatto con B o con un suo sottotipo. A runtime però, l'elemento che viene estratto è un oggetto della classe A, che non è convertibile in un tipo B: la JVM lancia l'eccezione ClassCastException.

Di seguito, allegato l'esempio per provare in Eclipse questi casi Attach:TypeChecking_in_Java.zip

Modifica - Versioni - Stampa - Modifiche recenti - Cerca
Ultima modifica il 02/08/2006 ore 23:19 CEST (Vincenzo)