BoxingUnboxing - 420111aut25/cours420111 GitHub Wiki
Le boxing et unboxing permettent de convertir automatiquement entre types primitifs et leurs classes wrapper (objets).
- Boxing : conversion d’un type primitif en son objet wrapper.
- Unboxing : conversion d’un objet wrapper en type primitif.
Type primitif | Classe wrapper |
---|---|
int |
Integer |
double |
Double |
boolean |
Boolean |
char |
Character |
long |
Long |
float |
Float |
short |
Short |
byte |
Byte |
int a = 5;
Integer boxed = a; // Boxing automatique
Integer obj = 10;
int prim = obj; // Unboxing automatique
- Permet d’utiliser des types primitifs dans des collections qui demandent des objets (
ArrayList<Integer>
par exemple). - Simplifie le code en évitant les conversions manuelles (
intValue()
,doubleValue()
).
Avant Java 5, il fallait faire explicitement :
Integer boxed = Integer.valueOf(a); // Boxing manuel
int prim = boxed.intValue(); // Unboxing manuel
- Le boxing/unboxing automatique peut créer des coûts de performance s’il est fait trop souvent.
- Toujours préférer les types primitifs quand possible pour optimiser.
- Boxing = primitif → objet wrapper.
- Unboxing = objet wrapper → primitif.
- C’est automatique depuis Java 5.
- Utilisé surtout avec les collections et API qui fonctionnent avec objets.