جاري التحميل...

أنواع Wrapper في Java

أنشئ ArrayList<Integer> باسم nums، استدعِ nums.add(9); ثم nums.add(4);، واطبع nums.get(0). ترجم Crate.java ونفّذ java Crate. يجب أن تظهر الشاشة سطرًا واحدًا: 9. داخل الأقواس الزاوية يأتي Integer، لا int. تخزين الأعداد الصحيحة في قائمة عبر نوع Wrapper — حتى تستطيع المجموعة حمل كائنات — هو ما تعلّمه هذه الصفحة.

لماذا تحتاج القائمة إلى Integer

في صفحة iterating كانت القائمة تحمل كلمات String. ArrayList يخزّن كائنات. النوع الأولي int ليس كائنًا. نوع Wrapper المسمّى Integer هو الشكل الكائني للعدد الصحيح. داخل الأقواس الزاوية اكتب Integer. عندما تستدعي add(9)، تستطيع Java تغليف القيمة الأولية 9 إلى Integer نيابةً عنك في هذه الصفحة. ذلك التغليف الهادئ يكفي لملف التدريس.
افتح Crate.java. أبقِ اسم الفئة العامة Crate ليطابق اسم الملف. احذف بقايا for (String t : tags) وإضافات oak و pine وعروض Lane وأي بقايا HashSet أو map. احذف أيضًا أي Scanner أو nextLine. يجب ألا ينتظر البرنامج الكتابة.
قرب الأعلى، فوق public class Crate، اكتب:
import java.util.ArrayList;
داخل main أنشئ القائمة:
ArrayList<Integer> nums = new ArrayList<Integer>();
لا تكتب ArrayList<int> — javac يرفض ذلك الشكل. أبقِ Integer على جانبي سطر الإنشاء في هذه الصفحة. ثم أضِف عددين صحيحين بلا علامات اقتباس:
nums.add(9);
nums.add(4);
ثم اكتب:
System.out.println(nums.get(0));
الخانة صفر تحمل 9. احفظ قبل الترجمة.

Crate Integer list get

java
import java.util.ArrayList;

public class Crate {
    public static void main(String[] args) {
        ArrayList<Integer> nums = new ArrayList<Integer>();
        nums.add(9);
        nums.add(4);
        System.out.println(nums.get(0));
    }
}

من المجلد الذي يحوي Crate.java نفّذ javac Crate.java. عندما تتطابق الأقواس والدواليب والأقواس الزاوية والفواصل المنقوطة، لا يكتب javac سطرًا من عنده. ثم نفّذ java Crate — لا java Crate.java ولا java Integer. احذف لاحقة .java من أمر التشغيل.
يجب أن يطبع البرنامج سطرًا واحدًا ويتوقف: 9. لا يطلب منك الكتابة. إذا انتظر الطرفية إدخال لوحة المفاتيح، فما زال استدعاء nextLine من تمرين قديم في ملف. احذف ذلك الاستدعاء وأبقِ إنشاء ArrayList<Integer> وسطري add وSystem.out.println(nums.get(0));.
امشِ التشغيل مرة. تبدأ Java من Crate.main. تنمو القائمة بعددين صحيحين مغلّفين. يعيد get(0) أول Integer. يكتب سطر الطباعة 9. تظهر الشاشة 9. لا يجب أن يُطبع شيء آخر. إذا رأيت oak أو pine، فما زال عرض iterating من Lane يعمل — انتقل إلى java Crate. إذا رأيت 4، فقد طبعت get(1) خطأً؛ أبقِ get(0) لملف التدريس. إذا رأيت [9, 4]، فقد طبعت كائن القائمة كله بدل الخانة صفر — أبقِ println(nums.get(0)) لمسار الاختبار.
إذا رفض javac شكل ArrayList<int>، غيّر الأقواس إلى Integer. ذلك الخطأ هو جوهر قاعدة النوع في هذا الدرس؛ أصلح الأقواس وترجم مجددًا. إذا كتبت nums.add("9"); بعلامات اقتباس، فأنت تضيف String، وjavac يرفض ذلك لـ ArrayList<Integer>. أبقِ الأرقام بلا اقتباس في هذه الصفحة. إذا نقص الاستيراد، لا يجد javac النوع ArrayList — ضع import java.util.ArrayList; فوق الفئة. إملاء Integer بحرف I كبير مهم؛ integer داخل الأقواس لا يطابق نوع Wrapper الذي تتوقعه Java هنا.

Unbox إلى int عادي

عرض ثانٍ يقرأ القيمة الأولى في متغير أولي int ثم يطبع ذلك المتغير. تفكّ Java تغليف Integer نيابةً عنك في هذا الإسناد.

Crate unbox to int

java
import java.util.ArrayList;

public class Crate {
    public static void main(String[] args) {
        ArrayList<Integer> nums = new ArrayList<Integer>();
        nums.add(9);
        nums.add(4);
        int n = nums.get(0);
        System.out.println(n);
    }
}

ترجم ونفّذ بالطريقة نفسها. ما زالت الشاشة تُظهر 9. السطر int n = nums.get(0); يخرج قيمة Wrapper كـ int عادي. لا تحتاج لاستدعاء intValue() في مسار المبتدئ هنا. أبقِ ملف التدريس الأول شكل println(nums.get(0)) المباشر. استخدم ملف الـ unbox لترى أن متغيرًا أوليًا يستطيع حمل ما خزّنته القائمة كـ Integer. أبقِ الاسم n كما هو ظاهر كي يبقى سطر الطباعة قصيرًا. لا تخلط for-each على وسوم String في هذا الملف الثاني — ابقَ مع قائمة الأعداد وإسناد int واحد.

جنبًا إلى جنب

جدول قصير يبقي قاعدة النوع واضحة.

📊 int vs Integer for lists

Piece On this page
list type ArrayList<Integer>
illegal ArrayList<int> — not allowed
add nums.add(9); — boxes to Integer
read nums.get(0) prints 9; may unbox to int n
الجدول تذكير فقط. القطع التي تبقيها هي الاستيراد وArrayList<Integer> والإضافتان وget(0).

مقارنة بقوائم String وبالأولية وحدها

في صفحة iterating حملت ArrayList<String> كلمات. ذلك ما زال يعمل. هذه الصفحة تغيّر نوع العنصر إلى Integer حتى تجلس الأعداد الصحيحة في قائمة. for-each متبقّى من Lane يطبع oak و pine درس آخر. لهذه الصفحة أبقِ Crate واطبع 9 من get(0).
ما زال int x = 9; وحده يعمل بلا أي قائمة. تصبح الـ Wrappers مهمة عندما يطلب API المجموعة نوع كائن داخل الأقواس الزاوية. تتبع Wrappers أخرى الفكرة نفسها لاحقًا — Double بجانب double، وBoolean بجانب boolean — لكن هذه الصفحة تبقي Integer وint حتى تظل الشاشة رقمًا واحدًا واضحًا. لا تحتاج اليوم لحفظ كل أسماء Wrapper؛ تعلّم النمط مرة مع Integer بجانب int وشكل ArrayList<int> غير المسموح.
عندما تبقى ملفات Lane.java القديمة قريبة، اتركها أو احذفها فقط إذا شوّشت أي فئة تشغّل. نفّذ java Crate بعد ترجمة قائمة Wrapper من هذا الدرس. ينتهي مسار Collections هنا بذلك 9 الواضح على الشاشة قبل أن يلتفت الكورس إلى الأخطاء والملفات.

ما يبقى للـ exceptions

تغلق هذه الصفحة حاجة Wrapper في وحدة Collections للأعداد الصحيحة في قائمة. تفتح الوحدة التالية الأخطاء بـ exceptions. ابقَ هنا على هذه الصفحة مع ArrayList<Integer> وget(0). لا تفرض try أو catch كشرط في هذه الصفحة.

قبل الـ exceptions

يمكنك استيراد java.util.ArrayList، وإنشاء ArrayList<Integer> nums، وإضافة 9 و4، وطباعة nums.get(0) لترى 9. يمكنك أيضًا فك التغليف إلى int n. ترجم Crate.java ونفّذ java Crate. أتاح نوع Wrapper للقائمة حمل أعداد صحيحة. الصفحة التالية exceptions، حيث يعلن البرنامج المشاكل ويعالجها.
أبقِ Integer داخل الأقواس الزاوية. أبقِ إضافات الأرقام بلا اقتباس. أبقِ get(0) لشاشة التدريس 9. تلك العادات الثلاث هي نقطة التحقق قبل المتابعة. عندما تُظهر الشاشة 9 من قائمة Integer بعد ترجمة نظيفة لـ Crate.java، تكون الـ wrappers قد أدّت عملها لهذا الدرس وتكون جاهزًا للموضوع التالي.

🧠 اختبر معرفتك

جاهز للبدء

اختبر معرفتك

تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع

❓
5
الأسئلة
🎯
70%
للنجاح
♾️
∞
الوقت
🔄
∞
المحاولات

📝 التعليمات

  • اقرأ كل سؤال بعناية
  • اختر أفضل إجابة لكل سؤال
  • يمكنك إعادة الاختبار عدة مرات كما تريد
  • سيتم عرض تقدمك في الأعلى