Autoboxing (immuables) - 1

« Salut Amigo ! »

"Aujourd'hui, je vais parler de l'autoboxing . AutoBoxing signifie mettre automatiquement quelque chose dans une boîte."

"Vous vous souviendrez que Java a des types qui héritent de la classe Object, ainsi que des types primitifs. Mais il s'avère que des choses pratiques comme les collections et les génériques ne fonctionnent qu'avec des types qui héritent d'Object."

"Ensuite, la décision a été prise de créer une contrepartie non primitive de chaque type primitif."

Type primitif Homologue non primitif
octet Octet
court Court
entier Entier
long Long
flotter Flotter
double Double
booléen booléen
carboniser Personnage
annuler Annuler

"Mais c'est super gênant de convertir entre ces types tout le temps :"

int x = 3;
Integer y = new Integer(x + 1);
int z = y.intValue();

"Surtout lorsque vous travaillez directement avec des collections :"

Exemple
int[] numbers = new int[10];
ArrayList list = new ArrayList();
for (int i = 0; i < numbers.length; i++)
{
 list.add( new Integer(i));
}

« C'est pourquoi les créateurs de Java ont inventé l'« autoboxing » de leurs types primitifs et le « unboxing » pour leurs homologues non primitifs. »

"Voici comment cela fonctionne:

Ce que tu vois Que se passe-t-il vraiment
int x = 3;
Integer y = x + 1;
int x = 3;
Integer y = Integer.valueOf(x + 1);
int z = y;
int z = y.intValue();
Boolean b = Boolean.FALSE;
boolean a = b;
Boolean b = Boolean.FALSE;
boolean a = b.booleanValue();
Integer x = null;
int y = x;
Integer x = null; int y = x.intValue(); //Throws an exception

"C'est tout simple. Vous pouvez assigner des types int et Integer l'un à l'autre, et le compilateur s'occupe de tout le reste."

"C'est très pratique."

"Ouais. Mais il y a des nuances dont je parlerai plus tard."