"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني الجمع بين قيود الفئة والواجهة باستخدام Java Generics؟

كيف يمكنني الجمع بين قيود الفئة والواجهة باستخدام Java Generics؟

تم النشر بتاريخ 2024-12-22
تصفح:189

How Can I Combine Class and Interface Constraints Using Java Generics?

Java Generics مع توافق الفئة والواجهة

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

تحاول فرض فئة على توسيع ClassA وتنفيذ واجهة InterfaceB باستخدام بناء الجملة:

Class extends ClassA>

أو

Class extends InterfaceB>

سوف يلبي مطلبًا واحدًا فقط ويفشل في الجمع بين كليهما.

الحل

لحسن الحظ، تسمح أدوية Java العامة بواجهات متعددة أو فئة إضافية واجهات. ولتحقيق ذلك، قم بتعديل إعلان حرف البدل كما يلي:

كما هو موضح في البرنامج التعليمي للأدوية العامة بواسطة Sun، من خلال إلحاق & InterfaceName لكل واجهة إضافية مطلوبة، يمكن تحقيق مزيج معقد بشكل تعسفي. على سبيل المثال، يوضح إعلان JavaDoc الخاص بـ Collections#max هذا التعقيد:

public static > T max(Collection Extends T> Coll)
يتطلب الحفاظ على التوافق الثنائي هذه التصريحات المعقدة.

التنفيذ مع قيود الفئة والواجهة

لتنفيذ التقييد المطلوب في إعلان متغير، ضع حدًا عامًا على فئة:

class classB { } واجهة الواجهةC { } فئة عامة MyClass { متغير الفئة؛
class classB { }
interface interfaceC { }

public class MyClass {
    Class variable;
}

الاستنتاج

توفر أدوية Java العامة طرقًا مرنة لإنشاء مجموعات مقيدة من الفئات والواجهات. من خلال فهم بناء الجملة والقيود، يمكن للمطورين الاستفادة من هذه القوة لفرض متطلبات محددة في التعليمات البرمجية الخاصة بهم.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3