كيفية تنفيذ واجهة ماركر في جافا؟



ستطلعك هذه المقالة على جانب مثير للاهتمام من الواجهات يسمى Marker Interface In Java ومتابعته مع التنفيذ.

ستطلعك هذه المقالة على جانب مثير للاهتمام من الواجهات يسمى Marker Interface In ومتابعتها مع التنفيذ. سيتم تغطية المؤشرات التالية في هذه المقالة ،

فلنبدأ إذن ،





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

الانتقال مع هذه المقالة على Marker Interface في Java



واجهة قابلة للتسلسل

يمكن تعريف التسلسل في جافا على أنه عملية تحويل حالة كائن إلى تدفق بايت. يمكن تحقيق ذلك باستخدام الواجهة القابلة للتسلسل الموجودة في java.io.package. وتجدر الإشارة إلى أن جميع الأنواع الفرعية للفئة القابلة للتسلسل هي نفسها قابلة للتسلسل.

مثال:

import java.io. * class Main implements Serializable {int j String s // A class constructor public Main (int j، String s) {this.j = j this.s = s}} public class Test {public static void main (String [] args) تطرح IOException و ClassNotFoundException {Main obj = new Main (25، 'HelloWorld') // Serializing 'obj' FileOutputStream fos = new FileOutputStream ('pqr.txt') ObjectOutputStream oos = new ObjectOutputStream (fos) oos .writeObject (obj) // إلغاء تسلسل 'obj' FileInputStream fis = new FileInputStream ('pqr.txt') ObjectInputStream ois = new ObjectInputStream (fis) Main b = (Main) ois.readObject () // down-casting object System.out.println (b.j + '' + bs) // إغلاق التدفقات oos.close () ois.close ()}}

انتاج:
25 HelloWorld



الانتقال مع هذه المقالة على Marker Interface في Java

واجهة قابلة للاستنساخ:

يمكن العثور على هذه الواجهة في حزمة java.lang. الاستنساخ هو آلية إنشاء نسخة طبق الأصل أو نسخة طبق الأصل من كائن باسم مختلف.
يتم تنفيذ الواجهة القابلة للاستنساخ بواسطة فئة للإشارة إلى طريقة object.clone () أنه من القانوني للطريقة إنشاء نسخة حقل مقابل حقل من مثيلات تلك الفئة.
يتم طرح CloneNotSupportedException لفئة تستدعي طريقة clone دون تنفيذ واجهة قابلة للنسخ.

مثال:

import java.lang.Cloneable class javaClone تنفذ Cloneable {int j String s // تعريف مُنشئ فئة عام javaClone (int j، String s) {this.j = j this.s = s} // Overriding clone () method @ يطرح تجاوز استنساخ الكائن المحمي () CloneNotSupportedException {return super.clone ()}} فئة عامة رئيسية {public static void main (String [] args) تطرح CloneNotSupportedException {javaClone c = new javaClone (18، 'HelloWorld') // cloning ' c 'مع الاستمرار في الضغط على // مرجع كائن مستنسخ جديد في b // down-casting javaClone b = (javaClone) c.clone () System.out.println (bj) System.out.println (bs)}}

انتاج:
18
مرحبا بالعالم

الانتقال مع هذه المقالة على Marker Interface في Java

جافا addactionlistener (هذا)

واجهة عن بعد:

يمكن تعريف الكائن البعيد على أنه كائن يمكن استدعاء طرقه من JVM مختلف ، ومن المحتمل على مضيف آخر. تم العثور على هذه الواجهة في حزمة java.rmi. يجب أن يقوم الكائن البعيد بتنفيذ هذه الطريقة بشكل مباشر أو غير مباشر.

RMI:

Remote Method Convocation هي واجهة برمجة تطبيقات تمكّن الكائن من استدعاء طرق على كائن يعمل في JVM مختلف. يوفر الاتصال عن بعد بين التطبيقين باستخدام الكائنات التالية: كعب و هيكل عظمي.

كعب:

يمكن تعريف كعب الروتين على أنه كائن موجود في جانب العميل ويمثل الكائن البعيد. يقوم بإنشاء كتلة معلومات تتكون من:
α معرف الكائن البعيد
α اسم الطريقة التي سيتم استدعاؤها
α معلمات لجهاز JVM البعيد

هيكل عظمي:

المهمة الرئيسية للكائن الهيكل هو تمرير الطلبات من كعب إلى الكائن البعيد. بالإضافة إلى ذلك ، فإنه يؤدي المهام الواردة أدناه:
تستدعي الطريقة المرغوبة على الكائن البعيد الأصلي
α يقرأ المعلمة المحددة للكائن البعيد

الانتقال مع هذه المقالة على Marker Interface في Java

خطوات تنفيذ الواجهة البعيدة:

تحديد واجهة بعيدة:

import java.rmi. * public interface AddAll تمتد عن بعد {public int add (int r، int s) throws RemoteException}

هنا ، يتم تمديد واجهة Remote ، ويتم الإعلان عن RemoteException بجميع طرق الواجهة البعيدة.

الانتقال مع هذه المقالة على Marker Interface في Java

تنفيذ الواجهة البعيدة:

هناك طريقتان لتوفير التنفيذ للواجهة البعيدة:
α قم بتوسيع فئة UnicastRemoteObject
α استخدم طريقة exportObject () لفئة UnicastRemoteObject

import java.rmi. * import java.rmi.server. * public class AddAllRemote توسع UnicastRemoteObject تنفذ Adder {AddAllRemote () يطرح RemoteException {super ()} public int add (int r، int s) {return r + s}}

باستخدام rmic (rmi compiler) ، قم بإنشاء كائنات كعب و هيكل عظمي.

يمكن إنشاء كائنات كعب الروتين والهيكل العظمي باستخدام مترجم rmi. تستدعي أداة rmi برنامج التحويل البرمجي RMI لتكوين الكائنات.
rmic AddAllRemote

باستخدام أداة rmiregistry ، ابدأ خدمة التسجيل.

يمكن بدء خدمة التسجيل باستخدام أداة rmregistry. يتم استخدام رقم منفذ افتراضي إذا لم يحدده المستخدم.
rmiregistry 5000

الانتقال مع هذه المقالة على Marker Interface في Java

إنشاء وبدء التطبيق البعيد.

import java.rmi. * import java.rmi.registry. * public class Server {public static void main (String args []) {try {AddAll stub = new AddAllRemote () Naming.rebind ('rmi: // localhost: 5000 / sak '، stub)} catch (استثناء هـ) {System.out.println (e)}}}

يتم ربط الكائن البعيد بالاسم sak في المثال أعلاه.

الانتقال مع هذه المقالة على Marker Interface في Java

قم بإنشاء وبدء تطبيق العميل.

في المثال المذكور ، يتم تشغيل تطبيقات الخادم والعميل على نفس الجهاز. وبالتالي ، يتم استخدام المضيف المحلي.

import java.rmi. * public class Client {public static void main (String args []) {try {AddAll stub = (AddAll) Naming.lookup ('rmi: // localhost: 5000 / sak') System.out.println (stub.add (29،18))} catch (استثناء هـ) {}}}

للوصول إلى الكائن البعيد من جهاز مختلف ، يجب تغيير اسم المضيف المحلي إلى عنوان IP أو اسم المضيف حيث يوجد الكائن البعيد.

يمكن تحقيق طريقة فعالة لتصنيف الكود باستخدام واجهة العلامة.

وهكذا وصلنا إلى نهاية هذا المقال. إذا كنت ترغب في معرفة المزيد ، تحقق من بواسطة Edureka ، شركة تعليمية موثوقة عبر الإنترنت. تم تصميم دورة تدريب وإصدار شهادات Java J2EE و SOA من Edureka لتدريبك على مفاهيم Java الأساسية والمتقدمة جنبًا إلى جنب مع العديد من أطر Java مثل Hibernate & Spring.

لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات في هذه المدونة وسنعاود الاتصال بك في أقرب وقت ممكن.