Boxing/Unboxing automatique en Java
Le boxing et le déballage automatiques, introduits dans JDK 5.0, permettent une conversion transparente entre les types primitifs et leur wrapper correspondant cours. Bien que cela semble simple, la façon dont ces conversions se produisent présente des subtilités.
Auto Boxing
Plutôt que d'utiliser le constructeur, l'auto boxing utilise la méthode valueOf() du classe d'emballage. Cette méthode prend la valeur primitive comme paramètre et renvoie l'objet wrapper correspondant. Par exemple :
int intValue = 0; Integer intObject = Integer.valueOf(intValue); // Calls Integer.valueOf(0)
L'utilisation de valueOf() permet la mise en cache, empêchant la création de nouveaux objets pour chaque opération de boxing.
Déballage automatique
Unboxing, en revanche, utilise la méthode intValue() (ou la méthode correspondante) de la classe wrapper pour extraire la valeur primitive de l'objet. Cette méthode renvoie la valeur primitive stockée dans l'objet wrapper. Par exemple :
Integer intObject = new Integer(0); int intValue = intObject.intValue(); // Calls intObject.intValue()
Exemples spécifiques
L'exemple fourni illustre que seul le boxing int-to-Integer est autorisé car le constructeur Integer n'accepte qu'un paramètre int. Pour les autres types primitifs, valueOf() doit être utilisé.
De même, lors du déballage d'un objet wrapper en un octet ou un short, une erreur est rencontrée. En effet, intValue() convertit directement la valeur int en int, pas en octet ou en short.
Conclusion
Le boxing et le déballage automatiques impliquent l'utilisation de valueOf( ) et les méthodes correspondantes pour convertir respectivement entre les types primitifs et les classes wrapper. Ce mécanisme améliore la lisibilité du code et simplifie les opérations, favorisant un code efficace et élégant.
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!