Java/Tipi di dato: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Riga 44:
Le conversioni in Java si chiamano anche operazioni di ''cast''. Una conversione ammessa dal linguaggio può essere realizzata in due soli modi: con ''cast esplicito'' o con ''cast implicito''. Il primo si ha utilizzando l'apposito operatore; il secondo, invece, viene gestito in automatico dal compilatore e non ha un costrutto specifico. Ogni cast implicito può essere reso esplicito, se si vuole (a volte è utile per chiarezza).
L'idea che sta alla base di questo meccanismo, in Java, è che, in presenza di un'operazione che potrebbe avere risultati non previsti,
Per quanto riguarda i tipi base:
*
*al contrario, sono ammesse tutte le conversioni da un certo tipo numerico verso un altro tipo numerico;
*ma richiedono necessariamente il cast esplicito tutte le conversioni da un tipo numerico più "grande" ad uno più "piccolo" (per es. da ''long'' verso ''int'') o da un tipo con virgola verso un tipo intero.
Per quanto riguarda le classi:
Riga 55:
*le conversioni da un supertipo a un suo sottotipo (per es. da Collection ad ArrayList) richiedono cast esplicito.
Il motivo è che
*nel primo caso, la conversione riesce sempre
*nel secondo, invece, potrebbe non riuscire: un oggetto [http://download.oracle.com/javase/6/docs/api/java/util/Collection.html Collection] potrebbe essere istanza di [http://download.oracle.com/javase/6/docs/api/java/util/ArrayList.html ArrayList], oppure di [http://download.oracle.com/javase/6/docs/api/java/util/LinkedList.html LinkedList], oppure di [http://download.oracle.com/javase/6/docs/api/java/util/HashSet.html HashSet], o di qualche altro tipo ancora.
Le specifiche di linguaggio affermano che, se si cerca di convertire un oggetto di un tipo X ad un altro tipo Y di cui l'oggetto '''non''' è istanza, allora
== Gli Array ==
|