هل يمكن للمصفوفات الاحتفاظ بالعناصر العامة؟
يمكن أن تتفاعل الأنواع والمصفوفات العامة بشكل مختلف في Java. خذ بعين الاعتبار الكود التالي:
ArrayList a = new ArrayList();
يتم تجميع هذا الكود بنجاح، مما يؤدي إلى إنشاء ArrayList عام يسمى a. ومع ذلك، فشل تجميع التعليمات البرمجية التالية:
ArrayList[] a = new ArrayList[10];
لماذا هذا؟ يبدو أن المصفوفات والأدوية غير متوافقة. لفهم ذلك، دعنا نستكشف محو الكتابة في Java.
محو النوع: خلف الكواليس
عندما تقوم Java بالتجميع، فإنها تنفذ محو الكتابة، الذي يستبدل معلومات النوع العامة بـ الأنواع الخام (الكائن). وهذا يمنع حدوث أخطاء مثل وضع سلسلة في قائمة ArrayList للأعداد الصحيحة. ومع ذلك، تتطلب المصفوفات نوعًا خامًا، ولا يمكن تمثيل الأنواع العامة كأنواع خام.
إصلاح مشكلة المصفوفة
لإنشاء مصفوفة من العناصر العامة، يمكنك صراحةً تحويل المصفوفة إلى النوع المطلوب:
ArrayList[] a = (ArrayList[]) new ArrayList[10];
يقوم هذا التمثيل بإرشاد المترجم إلى أن المصفوفة يجب أن تعتبر مصفوفة من ArrayLists مع العناصر الأساسية.
قائمة القوائم: الاستثناء
في Java، لا تعتبر قائمة القوائم مصفوفة. ومن ثم، يتم تجميع التعليمة البرمجية التالية دون صب النوع:
ArrayList> b = new ArrayList>();
ينشأ هذا التمييز بسبب ArrayList هو نوع غير مصفوفي.
الاستنتاج
المصفوفات والأنواع العامة لديك قيود في Java بسبب محو النوع. ومع ذلك، من خلال إرسال المصفوفات بشكل صريح إلى النوع العام المطلوب أو استخدام قوائم القوائم، يمكن للمرء التنقل بين هذه القيود واستخدام الأنواع العامة بشكل فعال في كلا السياقين.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3