Boxing/Unboxing automatique en Java
Le boxing et le déballage automatiques en Java simplifient les conversions de types entre les types de données primitifs et leurs classes wrapper correspondantes. Introduite dans JDK 5.0, cette fonctionnalité offre une intégration transparente de ces deux représentations.
Auto Boxing
Lors de l'attribution d'une valeur primitive à une variable de classe wrapper, une boxe automatique se produit . Contrairement à l’hypothèse selon laquelle le constructeur de la classe wrapper est utilisé, la méthode statique valueOf() est invoquée à la place. Cela est évident dans le bytecode généré pour le code suivant :
Integer n = 42;
0: bipush 42 2: invokestatic #16 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; 5: astore_1
La méthode valueOf() met en cache les objets créés, garantissant l'efficacité des ressources.
Déballage automatique
À l'inverse, lors de l'extraction d'une valeur primitive d'une variable de classe wrapper, un déballage automatique se produit. Ce processus utilise la méthode intValue() pour les entiers (et des méthodes analogues pour d'autres types), comme illustré dans le bytecode pour :
int n = Integer.valueOf(42);
0: bipush 42 2: invokestatic #16 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; 5: invokevirtual #22 // Method java/lang/Integer.intValue:()I 8: istore_1
Cette méthode renvoie simplement la valeur primitive stockée dans l'objet wrapper. .
En résumé, le boxing/unboxing automatique implique l'utilisation de méthodes statiques valueOf() et intValue() (ou similaire) pour convertir de manière transparente entre les représentations de classe primitives et wrapper. Cela simplifie le code et améliore les performances en utilisant des mécanismes de mise en cache.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!