כיצד ליישם ממשק סמנים ב- Java?



מאמר זה יתדרך אתכם על היבט מעניין של ממשקים הנקראים ממשק סמנים ב- Java ויעקוב אחריו ביישום.

מאמר זה יתדרך אתכם על היבט מעניין של ממשקים המכונה ממשק ממשק פנימי ולעקוב אחריו עם היישום. המצביעים הבאים יוסקרו במאמר זה,

אז בואו נתחיל אז,





ממשק מרקר הוא ממשק ריק, כלומר אינו מכיל שיטות או שדות כלשהם. זה ידוע גם כממשק תיוג ומשמש לציין או ליידע את ה- JVM כי בכיתה המיישמת ממשק זה תהיה התנהגות מיוחדת כלשהי. ניתן להשיג דרך יעילה לסיווג קוד באמצעות ממשק הסמן. דוגמאות לממשק כזה הן: ממשק ניתן לסידור, ניתוק לניצול ומרוחק.

עוברים עם מאמר זה על ממשק מרקר בג'אווה



ממשק ניתן לסידור

ניתן להגדיר סידור ב- Java כתהליך המרת מצב אובייקט לזרם בתים. ניתן להשיג זאת באמצעות הממשק הסדרני הקיים ב- java.io.package. יש לציין כי כל תת-הסוגים של מחלקה מסודרת הם עצמם מסודרים.

דוגמא:

ייבא java.io. * מחלקה עיקרית מיישמת ניתן להתאמה לסדרה {int j String s // A constructor public public Main (int j, String s) {this.j = j this.s = s}} class public Test {public static void main (String [] args) זורק IOException, ClassNotFoundException {Main obj = main main (25, 'HelloWorld') // Serializing 'obj' FileOutputStream fos = new FileOutputStream ('pqr.txt') ObjectOutputStream oos = ObjectOutputStream חדש (fos) oos .writeObject (obj) // דה-סידור 'obj' FileInputStream fis = חדש FileInputStream ('pqr.txt') ObjectInputStream ois = חדש ObjectInputStream (fis) ראשי b = (ראשי) ois.readObject () // אובייקט למטה הליהוק System.out.println (b.j + '' + bs) // סגירת זרמים oos.close () ois.close ()}}

תְפוּקָה:
25 HelloWorld



עוברים עם מאמר זה על ממשק מרקר בג'אווה

ממשק משובט:

ממשק זה ניתן למצוא בחבילה java.lang. שיבוט הוא המנגנון של יצירת העתק או העתק מדויק של אובייקט בשם אחר.
ממשק Cloneable מיושם על ידי מחלקה כדי לציין בפני שיטת object.clone () כי החוקי הוא שהשיטה יוצרת עותק שדה-שדה של מופעים של אותה מחלקה.
CloneNotSupportedException נזרק למחלקה שמפעילה את שיטת השיבוט מבלי ליישם ממשק משובט.

דוגמא:

ייבא מחלקה java.lang.Cloneable javaClone מיישמת Cloneable {int j String s // הגדרת בונה מחלקה javaClone ציבורית (int j, String s) {this.j = j this.s = s} // שיטת שיבוט () עקיפת שיטה @ עקוף שיבוט אובייקט מוגן () זורק CloneNotSupportedException {return super.clone ()}} מחלקה ציבורית ראשי {public static void main (String [] args) זורק CloneNotSupportedException {javaClone c = new javaClone (18, 'HelloWorld') // cloning ' c 'והחזקת // הפניה חדשה של אובייקט משובט ב- b // מטה-מטה javaClone b = (javaClone) c.clone () System.out.println (bj) System.out.println (bs)}}

תְפוּקָה:
18
שלום עולם

עוברים עם מאמר זה על ממשק מרקר בג'אווה

ממשק מרחוק:

ניתן להגדיר אובייקט מרוחק כאובייקט שניתן להפעיל את שיטותיו מ- JVM אחר, פוטנציאלי על מארח אחר. ממשק זה נמצא בחבילה java.rmi. על אובייקט מרוחק ליישם שיטה זו באופן ישיר או עקיף.

RMI:

כינוס שיטה מרחוק הוא ממשק API המאפשר לאובייקט להפעיל שיטות באובייקט הפועל ב- JVM אחר. הוא מספק תקשורת מרחוק בין שני היישומים באמצעות האובייקטים הבאים: בדל ושלד.

מעבר על ערך לעומת מעבר על ידי

בָּדָל:

ניתן להגדיר שטאב כאובייקט שנמצא בצד הלקוח ומייצג את האובייקט המרוחק. זה יוצר גוש מידע המורכב מ:
α מזהה של האובייקט המרוחק
α שם השיטה שיש להפעיל
α פרמטרים ל- JVM המרוחק

שֶׁלֶד:

התפקיד העיקרי של אובייקט השלד הוא להעביר את הבקשות מהדאב לאובייקט המרוחק. בנוסף, הוא מבצע את המשימות המפורטות להלן:
α היא קוראת לשיטה הרצויה על האובייקט המרוחק המקורי
α קורא את הפרמטר שצוין עבור האובייקט המרוחק

עוברים עם מאמר זה על ממשק מרקר בג'אווה

שלבים ליישום ממשק מרוחק:

הגדר ממשק מרוחק:

ייבא java.rmi. * ממשק ציבורי AddAll מרחיב מרחוק {public int add (int r, int s) זורק RemoteException}

כאן מורחב הממשק המרוחק, ו- RemoteException מוכרז בכל השיטות של הממשק המרוחק.

בובה לעומת שף לעומת דוקר

עוברים עם מאמר זה על ממשק מרקר בג'אווה

יישם את הממשק המרוחק:

ישנן שתי דרכים לספק יישום לממשק המרוחק:
α הרחב את מחלקת UnicastRemoteObject
α השתמש בשיטת exportObject () של מחלקת UnicastRemoteObject

ייבא java.rmi. * ייבא java.rmi.server. * מחלקה ציבורית AddAllRemote מרחיב את UnicastRemoteObject מיישם Adder {AddAllRemote () זורק RemoteException {super ()} public int להוסיף (int r, int s) {return r + s}}

באמצעות rmic (מהדר rmi), צור את חפצי השלד והשלד.

ניתן ליצור את חפצי השלד והשלד באמצעות מהדר ה- rmi. הכלי rmi מזמין את מהדר ה- RMI כדי ליצור את האובייקטים.
rmic AddAllRemote

השתמש בכלי rmiregistry, הפעל את שירות הרישום.

ניתן להפעיל את שירות הרישום באמצעות הכלי rmregistry. נעשה שימוש במספר יציאת ברירת מחדל אם המשתמש לא ציין אותו.
רמיסטריקה 5000

עוברים עם מאמר זה על ממשק מרקר בג'אווה

צור והפעל את היישום המרוחק.

ייבא java.rmi. * ייבא java.rmi.registry. * שרת מחלקה ציבורית {main public static void main (String args []) {try {AddAll stub = new AddAllRemote () Naming.rebind ('rmi: // localhost: 5000 / sak ', stub)} לתפוס (Exception e) {System.out.println (e)}}}

האובייקט המרוחק נקשר בשם סאק בדוגמה שלעיל.

עוברים עם מאמר זה על ממשק מרקר בג'אווה

צור והפעל את יישום הלקוח.

בדוגמה שניתנה, השרת ויישומי הלקוח מופעלים על אותה מכונה. לפיכך, השימוש ב- localhost מתבצע.

ייבא java.rmi. * לקוח מחלקה ציבורית {ציבורי סטטי ריק ריק (מחרוזת ארגומנטים []) {נסה {AddAll stub = (AddAll) Naming.lookup ('rmi: // localhost: 5000 / sak') System.out.println (stub.add (29,18))} לתפוס (חריג ה) {}}}

כדי לגשת לאובייקט המרוחק ממכונה אחרת, יש לשנות את שם המארח המקומי לכתובת ה- IP או לשם המארח בו נמצא האובייקט המרוחק.

ניתן להשיג דרך יעילה לסיווג קוד באמצעות ממשק הסמן.

לפיכך הגענו לסוף מאמר זה. אם ברצונך ללמוד עוד, עיין ב מאת אדוריקה, חברת למידה מקוונת אמינה. קורס ההכשרה וההסמכה של Java J2EE ו- SOA של אדוריקה נועד להכשיר אותך לקונספטים מרכזיים של Java וגם עם מסגרות Java שונות כמו Hibernate & Spring.

יש לך שאלה עבורנו? אנא הזכיר זאת במדור התגובות בבלוג זה ונחזור אליך בהקדם האפשרי.