عندما تقوم بإنشاء قائمة (List) بنوع (Type) من الفئة (Class) الفرعية، يجب أن تتأكد من أنك قمت بتهيئة القائمة بشكل صحيح وأن لديك إشارة (Reference) صحيحة لكائن من الفئة الفرعية. في الكود الذي قدمته، لاحظ أنك قمت بتعيين القائمة (test
) إلى قيمة null
ولم تقم بتهيئتها باستخدام new ArrayList<>();
أو أي نوع آخر من قائمات Java.
بالإضافة إلى ذلك، يبدو أنك تحاول استخدام الدالة storeMessage
وgetRecentMessage
على القائمة test
، وهذه الدوال لا تنتمي إلى فئة List بشكل مباشر. يجب أن تكون هذه الدوال متاحة في الفئة MessageHandler
أو أي فئة فرعية أخرى يمكن تحويل القائمة إليها.
لحل هذه المشكلة، يمكنك استخدام التحويل الضمني (casting) لتحويل القائمة test
إلى النوع الصحيح، مثل هذا:
javaList test = new ArrayList<>();
for(int i = 0; i < 1000; i++){
desktopID = randomID.nextInt(10);
System.out.println(desktopID);
((MessageHandler) test).storeMessage("Message Number: "+ i, desktopID);
}
System.out.println(((MessageHandler) test).getRecentMessage(desktopID).toString());
ومن المهم أن تتأكد من أن فئة MessageHandler
تحتوي على الدوال storeMessage
و getRecentMessage
وأن تكون هذه الدوال متاحة للاستخدام.
المزيد من المعلومات
في سياق تطوير برامج Java، يعد تحقيق فهم صحيح للتفاعل بين الفئات والكائنات أمرًا أساسيًا لكتابة كود فعّال وصحيح. في الكود الذي قدمته، يظهر أنك قد أوجدت قائمة (List
) من نوع MessageHandler
، وهذا يفترض أن يكون لديك فئة MessageHandler
أو فئة فرعية منها.
للتوضيح أكثر، دعوني أقدم لك مزيدًا من المعلومات حول الفئات والكائنات في Java:
-
الفئات (Classes):
- الفئات تُستخدم لتعريف الكائنات والسلوكيات في Java.
- يمكنك إنشاء فئة جديدة باستخدام الكلمة المفتاحية
class
. - على سبيل المثال، إذا كان لديك فئة
MessageHandler
، يمكن أن يكون لديك أساليب مثلstoreMessage
وgetRecentMessage
داخلها.
-
الكائنات (Objects):
- الكائنات هي نسخ من الفئات، وتستخدم لتمثيل البيانات والسلوك في البرنامج.
- يتم إنشاء الكائنات باستخدام الكلمة المفتاحية
new
متبوعة بالفئة المستخدمة، على سبيل المثالnew MessageHandler()
.
-
التحويل الضمني (Casting):
- في Java، يُستخدم التحويل الضمني لتحويل نوع من الفئة إلى نوع آخر.
- في الكود السابق، استخدمت
(MessageHandler) test
لتحويل قائمةtest
إلى نوعMessageHandler
.
-
قوائم (Lists):
- قوائم Java تُستخدم لتخزين وإدارة مجموعة من الكائنات.
List
تعرف قائمة من نوعtest = new ArrayList<>(); MessageHandler
باستخدام فئةArrayList
.
-
التهيئة (Initialization):
- يجب تهيئة القائمة قبل استخدامها باستخدام
new ArrayList<>();
أو أي فئة قائمة أخرى.
- يجب تهيئة القائمة قبل استخدامها باستخدام
أخيرًا، تأكد من أن فئة MessageHandler
تحتوي على تعريفات صحيحة للأساليب storeMessage
و getRecentMessage
. إذا كنت تواجه مشكلة مع الأساليب، يمكنك مشاركة تعريفاتها للمساعدة الأفضل.