بسم الله الرحمن الرحيم
[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 والتى امررناها كبارميتر سابقا
خالد المصرى