مقارنة أعضاء Java Enum: == أو يساوي ()
أثناء العمل مع Java enums، يظهر سؤال شائع بخصوص العامل المناسب لـ تستخدم لمقارنة أعضاء التعداد. تقليديًا، استخدم المطورون طريقة .equals()، كما هو موضح في:
public useEnums(SomeEnum a) { if (a.equals(SomeEnum.SOME_ENUM_VALUE)) { ... } }
ومع ذلك، توضح بعض الأمثلة استخدام عامل التشغيل == للمقارنة:
public useEnums2(SomeEnum a) { if (a == SomeEnum.SOME_ENUM_VALUE) { ... } }
أي من هذه العوامل يجب أن يكون مفضلاً لمقارنة أعضاء التعداد؟
المعادل الفني والسلامة الخالية
ومن المثير للاهتمام أن كلا النهجين صحيحان من الناحية الفنية. يكشف الكود المصدري لـ .equals() في Java enums أنه ببساطة يفوض إلى ==. ومع ذلك، هناك اختلاف بسيط: == يوفر أيضًا أمانًا خاليًا.من خلال استخدام ==، يمكنك الحماية ضد المراجع الفارغة المحتملة في مقارنات أعضاء التعداد. يصبح هذا الجانب ذا أهمية خاصة عند العمل باستخدام التعليمات البرمجية الموروثة من الأنظمة القديمة أو مكتبات الجهات الخارجية حيث قد تظهر قيم فارغة أحيانًا.
توصية
مع الأخذ في الاعتبار الميزة الدقيقة للقيمة الخالية السلامة وحقيقة أن كلا من == و.equals() يؤديان نفس المقارنة بشكل أساسي، فمن المستحسن عمومًا استخدام == عند مقارنة أعضاء تعداد Java. تتوافق هذه التوصية مع التفضيل الشخصي للمؤلف أيضًا.تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3