الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال الأسبوع من صن: كيف يمكن عمل اسقاط لمصفوفة

مغلق
بدأه خالد المصري في 30 أكتوبر 2002 · 0 رد · 686 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1

بسم الله الرحمن الرحيم

[shdw]المشكلة[/shdw]

جربت عدة طرق لمحاولة اجراء عملية اسقاط لمصفوفة الا ان الكود يترجم بدون اخطاء الا انه يعطى اخطاء فى التنفيذ

هذه احدى المحاولات

class Foo { 
   main() { 
    ...some code... 

    Bar[] myBars = getBarArray(); 
     ...some code... 
     } 

    Bar[] 
     getBarArray() { 
     ArrayList list; 
      ...loop... 

      list.add(new Bar()); 
         ...end loop 

        return( (Bar[]) 
        list.toArray() ); 
       } 
 }

وهذه محاولة ثانية

class Foo { 
  main() { 
  ...some code... 
  Bar[] myBars = 
  (Bar[])getBarArray(); 
        ...some code... 
   } 

 Object[] 
  getBarArray() { 
   ArrayList list; 
    ...loop... 

    list.add(new Bar()); 
      ...end loop 

     return(list.toArray()); 
    } 
}

[shdw]الحل[/shdw]

المشكلة تكمن فى هذا الكود فى ان list.toArray() ترجع مصفوفة من النوع Object و القاعدة لإسقاط المصفوفات هى انه يجوزإجراء عملية اسقاط المصفوفات فقط و اذا فقط كان يمكن اجراء عملية الأسقاط بين نوعين هاتين المصفوفتين.

و هنا نجد ان الهدف Object لا يمكن اسقاطه الى Integer.

الكود الصحيح

Bar[] 
getBarArray() { 
ArrayList list; 
...loop... 

list.add(new Bar()); 
...end loop 
Integer i[]=new Integer[1]; 
return( (Bar[]) 
list.toArray(B) ); // Note that 'b' 
  } 
}

لاحظ اننا استخدمنا list.toArray(Object[]) ببدلا من list.toArray( حيث انها ترجع مصفوفة من النوع b والتى امررناها كبارميتر سابقا

خالد المصرى

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…