Autoboxing / Unboxing
التحويل التلقائي بين الأنواع Autoboxing / Unboxing
Autoboxing تحول نوع بدائي لصنف مغلف تلقائيًا، وUnboxing العكس — تحدث تلقائيًا منذ Java 5.
Java تحوّل تلقائيًا بين الأنواع البدائية (int) والمغلفة (Integer) عند الحاجة. Autoboxing: int → Integer. Unboxing: Integer → int. تحدث في المجموعات والمعاملات والاعياد.
الصياغة
Integer a = 5; // autoboxing: int → Integer int b = a; // unboxing: Integer → int List<Integer> list = new ArrayList<>(); list.add(10); // autoboxing int val = list.get(0); // unboxing
📄 مثال
import java.util.*;
// Autoboxing في المجموعات:
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(42); // int → Integer (autoboxing)
numbers.add(100); // int → Integer
int first = numbers.get(0); // Integer → int (unboxing)
// في المعاملات:
Integer x = 5;
Integer y = 10;
Integer sum = x + y; // x و y يتم unboxing ثم addition ثم autoboxing
System.out.println(sum); // 15
// مع Collections:
Map<String, Integer> map = new HashMap<>();
map.put("score", 95);
int score = map.get("score"); // unboxing مباشرأهم النقاط
| العنصر | الوظيفة |
|---|---|
| autoboxing | تحويل تلقائي من نوع بدائي لصنف مغلف |
| unboxing | تحويل تلقائي من صنف مغلف لنوع بدائي |
| cache | Integer من -128 إلى 127 يتم تخزينها مسبقًا cache |
💡 نصائح عملية
- لا تحاول التحكم يدويًا — Java تتعامل تلقائيًا في معظم الحالات
- في الحلقات الكبيرة، استخدم الأنواع البدائية مباشرة لتقليل overhead
⚠️ أخطاء شائعة
- Integer a = 128; Integer b = 128; a == b يُرجع false — لأن القيم فوق 127 خارج cache
- NullPointerException عند unboxing null: int x = (Integer) null;
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار JAVA الكامل بالعربي.