Java/Tipi di dato: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 76:
La famiglia dei tipi base e la famiglia dei tipi riferimento sono separate l'una dall'altra e definiscono due gerarchie distinte che non hanno alcun punto di giunzione. Per questo motivo, fino alla terza edizione delle specifiche di linguaggio, non erano ammesse conversioni tra tipi primitivi e tipi riferimento, né tramite ''cast'' implicito, né tramite ''cast'' esplicito.
 
Ogni classe wrapper permette di associare un oggetto a un valore del tipo primitivo corrispondente, e viceversa. Ad esempio, è possibile ottenere un oggetto <tt>Integer</tt> partendo da un numero di tipo <tt>int</tt>, invocando il [http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Integer.html#Integer(int) costruttore appropriato]; ed è possibile riottenere il numero intero invocando sull'oggetto il metodo [http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Integer.html#intValue() intValue()]. Un discorso analogo vale per ciascuno degli altri tipi primitivi. L'operazione di inserimento di un valore primitivo in un oggetto prende il nome di ''boxing''.
 
Prima di Java 5, era necessario invocare esplicitamente i costruttori e i metodi <tt>xxxValue()</tt> appropriati. Per rendere più sintetico e leggibile il codice che richiama queste operazioni, dalla terza versione delle specifiche di linguaggio (Java 5) in poi, è ammesso il ''cast implicito'' (implicito o esplicito) di un valore di un tipo primitivo verso il corrispondente tipo wrapper, e viceversa. Il compilatore lo sostituisce automaticamente questa sintassi con una istruzione che invoca i metodi o i costruttori del tipo wrapper.<br/>
L'operazione di inserimento di un valore primitivo in un oggetto ''tramite cast'' si chiama ''autoboxing''; l'operazione inversa (svolta sempre tramite cast) si chiama ''unboxing''.
 
Quindi, da Java 5 in poi, è possibile scrivere: