البرمجة

حل مشكلة IllegalArgumentException في Java Enum باستخدام قيم دقيقة

في البداية، يبدو أن لديك فئة Enum تسمى “PaymentType” تحتوي على مجموعة من القيم. عندما تحاول إنشاء فئة Enum باستخدام الطريقة “valueOf” في Java، يجب أن يكون الاسم الذي تمرره مطابقًا تمامًا لأحد القيم المعرفة في الفئة. في حالتك، تظهر الخطأ “IllegalArgumentException” لأن القيمة “subscr_signup” غير موجودة بين القيم المعرفة في Enum.

لحل هذا المشكل، يجب عليك التأكد من أن القيمة التي تمررها إلى valueOf تتطابق تمامًا مع أحد القيم المعرفة في Enum الخاص بك. يجب أن يتم البحث عن القيمة المعترف بها بحساسية كبيرة لحالة الأحرف. في حالتك، يجب أن تكون القيمة “subscr_signup” مكتوبة بنفس الحالة التي تم تعريفها بها في Enum.

على سبيل المثال، يمكنك تحسين الكود كما يلي:

java
PaymentType type = PaymentType.valueOf("SUBSCRIPTION_NEW");

وبهذا يجب أن ينجح الكود دون رمي استثناء. يجب عليك التأكد من أن تستخدم الأحرف الكبيرة والصحيحة لاسم القيمة عند استخدام valueOf.

المزيد من المعلومات

بالتأكيد، دعني أوسع شرحي للموضوع. في لغة البرمجة Java، الفئات Enum تعتبر مجموعة محددة من القيم الثابتة والتي يتم تعريفها في مرحلة تصميم الكود لتمثيل مجموعة من القيم ذات الصلة. في حالتك، يبدو أن لديك فئة Enum تسمى “PaymentType” وتحتوي على مجموعة من قيم الدفع المختلفة.

تقدم Java واجهة valueOf كطريقة لإنشاء فئة Enum من قيمة معينة باستخدام اسمها. ومع ذلك، يجب أن يتم تمرير الاسم بدقة كما هو معرف في تعريف الفئة Enum. في حالتك، لديك قيم مثل “SUBSCRIPTION_NEW” وليس “subscr_signup”. يجب أن تكون الأحرف الكبيرة والصغيرة مطابقة تمامًا لتعريف الفئة Enum.

الخطأ الحالي الذي تواجهه يحدث لأن Java لا تستطيع العثور على قيمة Enum باسم “subscr_signup”، لأن هذا الاسم غير موجود في الفئة Enum الخاصة بك.

بالتالي، يجب عليك استخدام القيمة المعترف بها بدقة، وهي “SUBSCRIPTION_NEW” في هذه الحالة، عند استخدام valueOf كالتالي:

java
PaymentType type = PaymentType.valueOf("SUBSCRIPTION_NEW");

هذا سيحل مشكلتك ويمكنك الآن إنشاء فئة Enum بنجاح دون رمي الاستثناء “IllegalArgumentException”.

زر الذهاب إلى الأعلى