TYPE WRAPPERS

java-logo

Vedremo come i tipi primitivi di Java possono essere convertiti e considerati degli oggetti. Ci sono varie ragioni per dover effettuare questa conversione e una di queste è rappresentata dai Generics. Un Type Wrapper è un involucro che noi andiamo a costruire attorno a un tipo primitivo. Per essere più precisi è una classe che incapsula il tipo primitivo.

Type wrapper

Tra le classi di maggiore importanza possiamo indicare i tipi numerici.

Tipi numerici

Le classi sono sottoclassi di Number. Tutte le classi Wrapper numeriche possiedono un particolare metodo statico che prende come parametro il tipo primitivo e lo converte nel corrispondente tipo Wrapper. Il metodo si chiama valueOf().

ValueOf

C’è un’altra forma particolare che prende in input una stringa.

String

BOXING E UNBOXING

Il meccanismo che abbiamo visto all’opera, cioè prendere in input un valore primitivo trasformato nel corrispondente tipo Wrapper si chiama Boxing. Vediamo il meccanismo inverso, cioè come si estrae da un tipo Wrapper il corrispondente tipo primitivo. Questo meccanismo si chiama Unboxing.

Estrazione tipo primitivo

AUTOBOXING E AUTO-UNBOXING

Vediamo come convertire un tipo primitivo nella corrispondente classe Wrapper e viceversa in modo del tutto automatico.

Autoboxing e auto-unboxing

La conversione avviene automaticamente. L’Autoboxing avviene anche quando passiamo un argomento ad un metodo.

Autoboxing nei metodi

La stessa cosa avviene anche con i valori di ritorno. Quando possibile usare sempre i tipi primitivi in quanto sia il Boxing che l’Unboxing hanno sempre un costo in termini di performance.

Valori di ritorno e autoboxing

LINK AI POST PRECEDENTI

IL LINGUAGGIO JAVA

LINK AL CODICE SU GITHUB

GITHUB

ESECUZIONE DEL CODICE DI ESEMPIO

  • Scaricare il codice da GITHUB, lanciare il file JAR con il seguente comando in Visual Studio Code, posizionandosi nella directory contenente il JAR.

        java -jar –enable-preview CorsoJava.jar

  • Oppure mettere in esecuzione il main che si trova nel file CorsoJava.java.