איך אני מעתיק אובייקט ב-Java

Yk Ny M Tyq Wbyyqt B Java



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

מאמר זה ידגים את הגישות להעתקת אובייקט ב-Java.

איך אני מעתיק אובייקט ב-Java?

ניתן להעתיק אובייקט ב-Java באמצעות הגישות הבאות:







גישה לכל השיעורים בתוך ' java.util חבילה לפני המעבר לדוגמאות:



יְבוּא java. util . *;

גישה 1: העתקת אובייקט ב-Java באמצעות 'Copy Constructor'

ה ' העתק קונסטרוקטור ” יוצר/מגדיר אובייקט על ידי התייחסות לאותו אובייקט מחלקה שנוצר קודם לכן.



דוגמא
הדוגמה הבאה מיישמת את 'העתק קונסטרוקטור' כדי להעתיק אובייקט:





פּוּמְבֵּי מעמד CopyObject {
int תְעוּדַת זֶהוּת ;
חוּט עִיר ;
CopyObject ( int תְעוּדַת זֶהוּת , חוּט עִיר ) {
זֶה . תְעוּדַת זֶהוּת = תְעוּדַת זֶהוּת ;
זֶה . עִיר = עִיר ; }
CopyObject ( אובייקט CopyObject ) {
זֶה . תְעוּדַת זֶהוּת = לְהִתְנַגֵד. תְעוּדַת זֶהוּת ;
זֶה . עִיר = לְהִתְנַגֵד. עִיר ; }
פּוּמְבֵּי בָּטֵל לְהַצִיג ( ) {
מערכת. הַחוּצָה . println ( 'מזהה ->' + זֶה . תְעוּדַת זֶהוּת ) ;
מערכת. הַחוּצָה . println ( 'עיר ->' + זֶה . עִיר ) ; }
פּוּמְבֵּי סטָטִי בָּטֵל רָאשִׁי ( חוּט [ ] args ) {
קלט סורק = חָדָשׁ סוֹרֵק ( מערכת. ב ) ;
מערכת. הַחוּצָה . println ( 'הזן את המזהה:' ) ;
int תְעוּדַת זֶהוּת = קֶלֶט. nextInt ( ) ;
מערכת. הַחוּצָה . println ( 'היכנס לעיר:' ) ;
חוּט עִיר = קֶלֶט. הַבָּא ( ) ;
CopyObject object1 = חָדָשׁ CopyObject ( תְעוּדַת זֶהוּת , עִיר ) ;
CopyObject object2 = חָדָשׁ CopyObject ( אובייקט1 ) ;
מערכת. הַחוּצָה . println ( 'אובייקט ברירת מחדל ->' ) ;
אובייקט1. לְהַצִיג ( ) ;
מערכת. הַחוּצָה . println ( 'אובייקט מועתק ->' ) ;
אובייקט2. לְהַצִיג ( ) ;
קֶלֶט. סגור ( ) ;
} }

בקטע הקוד שלמעלה:

  • צור כיתה בשם ' CopyObject '.
  • ציין את משתני החבר המוצהרים של המחלקה.
  • לאחר מכן, צור בנאי מחלקות בעל פרמטרים המקצה את הערכים המועברים למשתנים שצוינו באמצעות ' זֶה '.
  • כעת, צור ' העתק קונסטרוקטור ' שלוקח אובייקט מסוג מחלקה שכבר נוצר כפרמטר שלו שיועבר כארגומנט מאוחר יותר.
  • כמו כן, הגדר את הפונקציה ' לְהַצִיג() ' המציג את ערכי האובייקט שעברו.
  • בתוך ה ' רָאשִׁי() שיטת ', צור אובייקט 'סורק' כדי לאפשר קלט משתמש באמצעות ' System.in ' פרמטר.
  • כמו כן, שייך את ' nextInt() ' ו' הַבָּא() ” שיטות לקחת את הקלט של המשתמש והמחרוזת, בהתאמה.
  • צור אובייקט מחלקה באמצעות ' חָדָשׁ ' מילת המפתח וה' CopyObject() ' בנאי עם ערכי קלט המשתמש כארגומנטים שלו.
  • כמו כן, צור אובייקט העתקה עם האובייקט שנוצר כארגומנט שלו כדי להחזיר את התוכן המועתק על ידי הפניה לבנאי העתקת המחלקה.
  • לבסוף, הפעל את ' לְהַצִיג() ' פונקציה כדי להציג את ערכי הקלט של המשתמש שעברו ולסגור את ה'סורק'.

תְפוּקָה



בפלט זה, ניתן לרמוז שאובייקט העתקה נוצר ומוצג בהתאם.

גישה 2: העתקת אובייקט ב-Java באמצעות שיטת 'clone()'.

ה ' clone() שיטת ה' java.lang.Object ” class לוקחת אובייקט כפרמטר, יוצרת ונותנת עותק שלו. ניתן ליישם שיטה זו כדי להעתיק אובייקט על ידי התייחסות לאובייקט שכבר נוצר (שצריך להעתיק) ולשיטת 'clone()'.

תחביר

לְהִתְנַגֵד. שיבוט ( )

שיטה זו נותנת עותק של האובייקט וזורקת ' CloneNotSupportedException ' אם המחלקה של האובייקט לא מיישמת/החלה את הממשק 'ניתן לשכפול'.

דוגמא
עברו על שורות הקוד הבאות:

פּוּמְבֵּי מעמד CopyObject מיישם ניתן לשחזור {
int תְעוּדַת זֶהוּת ;
חוּט עִיר ;
CopyObject ( int תְעוּדַת זֶהוּת , חוּט עִיר ) {
זֶה . תְעוּדַת זֶהוּת = תְעוּדַת זֶהוּת ;
זֶה . עִיר = עִיר ;
}
פּוּמְבֵּי בָּטֵל לְהַצִיג ( ) {
מערכת. הַחוּצָה . println ( 'מזהה ->' + זֶה . תְעוּדַת זֶהוּת ) ;
מערכת. הַחוּצָה . println ( 'עיר ->' + זֶה . עִיר ) ;
}
פּוּמְבֵּי סטָטִי בָּטֵל רָאשִׁי ( חוּט [ ] args ) זורק CloneNotSupportedException {
קלט סורק = חָדָשׁ סוֹרֵק ( מערכת. ב ) ;
מערכת. הַחוּצָה . println ( 'הזן את המזהה:' ) ;
int תְעוּדַת זֶהוּת = קֶלֶט. nextInt ( ) ;
מערכת. הַחוּצָה . println ( 'היכנס לעיר:' ) ;
חוּט עִיר = קֶלֶט. הַבָּא ( ) ;
CopyObject object1 = חָדָשׁ CopyObject ( תְעוּדַת זֶהוּת , עִיר ) ;
מערכת. הַחוּצָה . println ( 'אובייקט ברירת מחדל ->' ) ;
אובייקט1. לְהַצִיג ( ) ;
מערכת. הַחוּצָה . println ( 'אובייקט מועתק ->' ) ;
CopyObject object2 = ( CopyObject ) אובייקט1. שיבוט ( ) ;
אובייקט2. לְהַצִיג ( ) ;
קֶלֶט. סגור ( ) ;
} }

על פי בלוק הקוד לעיל, בצע את השלבים המפורטים להלן:

  • זכור את הגישות הנדונות להגדרת מחלקה, ציון משתני האיברים, יצירת בנאי מחלקה בעל פרמטרים (הקצאת הערכים שעברו), והגדרת פונקציה להצגת הערכים, בהתאמה.
  • עכשיו, ב' רָאשִׁי() ', באופן דומה, המשתמש מזין את הערכים ומעביר את הערכים הללו לאובייקט המחלקה שנוצר ומציג אותם באמצעות הפונקציה המתאימה.
  • לאחר מכן, ה' clone() ' שיטה נכנסת לתוקף המשויכת לאובייקט שכבר נוצר כדי ליצור אובייקט העתקה.
  • לבסוף, הצג את תוכן האובייקט המועתק גם באמצעות הפונקציה הנדונה.

תְפוּקָה

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

סיכום

ניתן להעתיק אובייקט ב-Java באמצעות ' העתק קונסטרוקטור ', או ה ' clone() ' שיטה. הגישה הקודמת מעתיקה את האובייקט על ידי נטילת האובייקט שכבר נוצר כארגומנט של בונה העתקה. הגישה האחרונה משויכת ישירות לאובייקט המחלקה שנוצר. כתיבה זו הדגים את הגישות להעתקת אובייקט ב-Java.