Qu'est-ce que l'Autoboxing et l'Unboxing en Java ?

Feb 19 2023
Autoboxing : Autoboxing est une fonctionnalité de Java qui convertit automatiquement le type de données primitif en l'objet de classe wrapper correspondant. Par exemple, convertir un entier en entier, un double en double, etc.

Un utoboxing :

L'autoboxing est une fonctionnalité de Java qui convertit automatiquement le type de données primitif en l'objet de classe wrapper correspondant. Par exemple, convertir un entier en entier, un double en double, etc.

L'exemple le plus simple d'autoboxing est :

Caractère ch = 'c'

où le 'c' est un type primitif (char) qui est automatiquement converti en la classe wrapper correspondante (Character).

Où cela pourrait-il être utile lors des pratiques de codage ?

L'autoboxing est utile avec la liste (comme ArrayList, LinkedList, etc.). Prenons l'exemple de ArrayList.

Comme nous le savons, ArrayList ne contient qu'un objet, pas un type de données primitif, ce qui signifie que nous pouvons stocker l'objet de la classe wrapper, mais nous ne pouvons pas stocker le type de données primitif dans une ArrayList. Par exemple ArrayList<Integer> arr = new ArrayList<Integer>() ; c'est valable. Mais ArrayList<int> arr = new ArrayList<int>() ; ce n'est pas valide.

Considérons l'extrait de code écrit ci-dessous.

Explication de l'Autoboxing (fig 1. a)

Bien que nous ajoutions des valeurs int en tant que type primitif, plutôt que des objets Integer, le code se compile avec succès et ne produit pas d'erreur de temps de compilation. Car le compilateur JVM convertit le code précédent en code suivant :

Comment le compilateur convertit le code de la fig 1. a lors de la compilation (fig 1. b)

Ici, la conversion du type primitif int en classe wrapper Integer lors de l'opération d'ajout est appelée Autoboxing.

Déballage :

Unboxing est une fonctionnalité de Java qui convertit automatiquement l'objet de la classe wrapper dans le type de données primitif correspondant. Par exemple, convertir un Integer en un int, un Double en un double, etc.

Le déballage est le processus inverse de l'Autoboxing.

Où cela pourrait-il être utile lors des pratiques de codage ?

Le déballage aide les programmeurs, car il facilitera l'exécution de certaines opérations telles que les opérations arithmétiques sur la structure de données qui stocke l'objet de classe wrapper tel que List. À titre d'exemple :

Explication du déballage (fig 2. a)

Bien que les valeurs stockées dans une liste (arr) soient de type Integer, alors que nous ajoutons ces valeurs à la variable de type int total, les valeurs Integer sont automatiquement converties en int. Ce qui permettra à un programmeur d'effectuer facilement des opérations arithmétiques.

Le code se compile avec succès et ne produit pas d'erreur de temps de compilation. Car le compilateur JVM convertit le code précédent en code suivant :

Comment le compilateur convertit le code de la fig 2. a lors de la compilation (fig 2. b)

Ici, la conversion de int (type primitif) en Integer (objet de classe Wrapper) est appelée Unboxing.

Le tableau suivant est utile car il montre le type de données primitif avec sa classe wrapper correspondante.

table d'association entre le type primitif et la classe wrapper