English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يروي هذا المقال مثالاً عن استخدام الكلاسات غير المعروفة والوظائف الإعادة التوجيه في برمجة Android. نتشارك ذلك مع الجميع لتكون مرجعًا، كما يلي:
نستخدم في تطوير Android دائمًا بعض الكلاسات غير المعروفة والوظائف الإعادة التوجيه التي تحتويها، مثل، عندما نضبط مستمع النقر (OnCLickListener) للزر، نحتاج إلى تنفيذ واجهة Onclick()، وهذا هو الكلاس غير المعروف والوظيفة الإعادة التوجيه، فما مدى فهمك للكلاسات غير المعروفة والوظائف الإعادة التوجيه في JAVA؟ يقدم هذا المستند تفسيرًا مفصلاً.
أولاً، يجب أن تعرف أن الكلاسات الداخلية هي جزء رئيسي من لغة JAVA. يمكن أن تكون الكلاسات الداخلية في أي مكان داخل الكلاس، يمكن أن تكون في نفس المستوى مع المتغيرات النموذجية، أو داخل الطريقة، وحتى كجزء من تعبير. الكلاسات الداخلية في JAVA، تنقسم إلى كلاسات داخلية، كلاسات محلية، وكلاسات غير معروفة، وسنحكي عن الكلاسات غير المعروفة.
A. عن وظيفة إعادة التوجيه
النوع الغير معروف في الداخل يستخدم وظيفة إعادة التوجيه، ما هو وظيفة إعادة التوجيه؟
ما يعني إعادة التوجيه هو أن البرنامج التطبيقي للعميل C يُدعو إلى وظيفة معينة A في برنامج الخدمة S، ثم S يعود في وقت لاحق لتدعو إلى وظيفة معينة B في C، بالنسبة إلى C، يُدعى هذا B وظيفة إعادة التوجيه. على سبيل المثال، وظيفة عملية النافذة في Win32 هي وظيفة إعادة التوجيه النموذجية. عادةً، لن يدعو C إلى B، والهدف من تقديم B هو السماح لـ S بدعوته، وهو ما لا مفر منه للـ C. لأن S لا يعرف ما هو اسم B الذي يقدمه C، لذا يقوم S بتحديد معايير واجهة B (نموذج الوظيفة)، ثم يُخبر S مسبقًا من خلال وظيفة R عن استخدام وظيفة B، ويسمى هذا عملية تسجيل وظيفة إعادة التوجيه، ويُدعى R وظيفة التسجيل. يستخدم Web Service وRMI لـ Java ميكانيكية إعادة التوجيه، ويُمكن الوصول إلى برنامج الخادم عن بُعد. سنستخدم مثالًا لشرح ذلك:
كتب مبرمج A برمجة (برنامج a)، حيث تم تخصيص واجهة الدالة التدعية، وتم تعبئة البرنامج. يجب على مبرمج B أن يجعل a يستدعي دالة من برمجته b، لذا، عبر واجهة a، استدعى دالة من b. تم تحقيق الهدف. في C/C++، إذا كنت بحاجة إلى دالة تدعية، يجب على الدالة التدعية إخبار المطلوب عن عنوان الذاكرة الخاص بها، ولكن في Java، لا توجد عناوين الذاكرة، ماذا نفعل؟ يمكننا تنفيذ تعريف الدالة التدعية من خلال واجهة (interface).
افترض أنني مبرمج A، إليك برنامجي a:
public class Caller { public MyCallInterface mc; public void setCallfuc(MyCallInterface mc) { this.mc = mc; } public void call() this.mc.method(); } }
أحتاج إلى تعريف واجهة، حتى يمكن لمبرمج B كتابة البرنامج وفقًا لتعريفي لتنفيذ الواجهة.
public interface MyCallInterface { public void method(); }
إذن، يجب على مبرمج B تنفيذ هذه الواجهة لتحقيق هدف التدعية التدويرية:
public class B implements MyCallInterface { public void method() { System.out.println("التدعية"); } public static void main(String args[]) { Caller call = new Caller(); call.setCallfuc(new B()); call.call(); } }
B. عن الكائن الداخلي المجهول
للتفكير في ما هو الكائن الداخلي، دور الكائن الداخلي، التمثيل المتعدد في Java، ما هو الدالة التدعية. هناك العديد من التوضيحات التفصيلية على الإنترنت، ولكن لغرض البساطة، فقط تم تقديم شرح بسيط. الكائن الداخلي المجهول يتم إرساله كمعامل إلى الدالة، وفي هذه الدالة، سيتم استقبال الكائن الداخلي المجهول باستخدام نوع واجهة، ثم استدعاء دالة، وهذا هو التمثيل المتعدد. في الواقع، تم تنفيذ التدعية التدويرية. لأنه سيتم استدعاء دالة الكائن الداخلي المجهول الخاص بك. النصوص التالية تم كتابتها يدويًا دون اختبار فقط لغرض العرض.
interface InterfaceA{ String go(); } class Test(){ public void prtGo(InterfaceA ia){ System.out.println(ia.o()); } public static void main(String []args){ Test t = new Test(); t.prtGo(new InterfaceA(){ public String go(){ return"go"; } }); } }
بالنسبة للمزيد من المعلومات المتعلقة بAndroid感兴趣的 القراء يمكنهم مراجعة موضوعات هذا الموقع: 'دليل البدء والتقدم في تطوير Android'، 'طرق الت调试 والتغلب على المشاكل الشائعة في Android'، 'مجموعة من المهارات المتعلقة بالتعامل مع الوسائط في Android (الصوت، الفيديو، التسجيل، إلخ)'، 'ملخص استخدام العناصر الأساسية في Android'، 'ملخص المهارات المتعلقة بعرض العناصر في Android'، 'ملخص المهارات المتعلقة بلغة التصميم في Android'، و 'ملخص استخدام العناصر في Android'.
آمل أن يساعدك ما ذكرته في هذا المقال في تصميم برامج Android.
بيان: محتوى هذا المقال تم جمعه من الإنترنت، ملكية حقوق النشر للمالك الأصلي، تم جمع المحتوى من قبل المستخدمين عبر الإنترنت بشكل متعاوني وتحميله بشكل مستقل، هذا الموقع لا يملك حقوق الملكية، لم يتم تعديل المحتوى بشكل يدوي، ولا يتحمل أي مسؤولية قانونية ذات صلة. إذا كنت قد وجدت محتوى يشتبه في انتهاك حقوق النسخ، فيرجى إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال # ب @) لتقديم الشكوى، وتقديم الدليل المتعلق، وسيتم حذف المحتوى المزعوم الذي يشتبه في انتهاك حقوق النسخ على الفور.