كيف أقوم بنسخ كائن في Java

Kyf Aqwm Bnskh Kayn Fy Java



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

ستوضح هذه المقالة طرق نسخ كائن في Java.

كيف أقوم بنسخ كائن في Java؟

يمكن نسخ كائن في Java باستخدام الطرق التالية:







الوصول إلى جميع الفئات الموجودة داخل ' java.util حزمة 'قبل الانتقال إلى الأمثلة:



يستورد جافا. الاستفادة . * ؛

الأسلوب 1: نسخ كائن في Java باستخدام 'Copy Constructor'

ال ' منشئ النسخ 'ينشئ / يعرّف كائنًا بالإشارة إلى كائن الفئة نفسه الذي تم إنشاؤه مسبقًا.



مثال
يطبق المثال التالي 'Copy Constructor' لنسخ كائن:





عام فصل CopyObject {
int بطاقة تعريف ؛
خيط مدينة ؛
CopyObject ( int بطاقة تعريف و خيط مدينة ) {
هذا . بطاقة تعريف = بطاقة تعريف ؛
هذا . مدينة = مدينة ؛ }
CopyObject ( كائن CopyObject ) {
هذا . بطاقة تعريف = هدف. بطاقة تعريف ؛
هذا . مدينة = هدف. مدينة ؛ }
عام فارغ عرض ( ) {
نظام. خارج . println ( 'المعرف ->' + هذا . بطاقة تعريف ) ؛
نظام. خارج . println ( 'المدينة ->' + هذا . مدينة ) ؛ }
عام ثابتة فارغ رئيسي ( خيط [ ] أرجس ) {
إدخال الماسح الضوئي = جديد الماسح الضوئي ( نظام. في ) ؛
نظام. خارج . println ( 'أدخل المعرف:' ) ؛
int بطاقة تعريف = مدخل. التالي ( ) ؛
نظام. خارج . println ( 'أدخل المدينة:' ) ؛
خيط مدينة = مدخل. التالي ( ) ؛
كائن CopyObject1 = جديد CopyObject ( بطاقة تعريف و مدينة ) ؛
كائن CopyObject2 = جديد CopyObject ( الكائن 1 ) ؛
نظام. خارج . println ( 'الكائن الافتراضي ->' ) ؛
الكائن 1. عرض ( ) ؛
نظام. خارج . println ( 'كائن منسوخ ->' ) ؛
الكائن 2. عرض ( ) ؛
مدخل. يغلق ( ) ؛
} }

في مقتطف الشفرة أعلاه:

  • أنشئ فئة باسم ' CopyObject '.
  • حدد متغيرات العضو المحددة للفئة.
  • بعد ذلك ، أنشئ مُنشئ فئة ذي معلمات يخصص القيم التي تم تمريرها إلى المتغيرات المحددة عبر ' هذا '.
  • الآن ، قم بإنشاء ' منشئ النسخ 'الذي يأخذ كائن نوع فئة تم إنشاؤه بالفعل كمعامل له والذي سيتم تمريره كوسيطة لاحقًا.
  • أيضًا ، حدد الوظيفة ' عرض() 'الذي يعرض قيم الكائن التي تم تمريرها.
  • في ال ' رئيسي() '، قم بإنشاء كائن' Scanner 'للسماح للمستخدم بإدخال عبر' System.in ' معامل.
  • أيضًا ، اربط ' nextInt () ' و ' التالي() 'لأخذ مدخلات مستخدم الأعداد الصحيحة والسلسلة ، على التوالي.
  • قم بإنشاء كائن فئة عبر ' جديد 'الكلمة الرئيسية و' CopyObject () 'المُنشئ الذي يحتوي على قيم إدخال المستخدم كوسائط لها.
  • أيضًا ، قم بإنشاء كائن نسخة يحتوي على الكائن الذي تم إنشاؤه كوسيطة لإرجاع المحتويات المنسوخة بالرجوع إلى مُنشئ نسخة الفئة.
  • أخيرًا ، استدعاء ' عرض() 'لعرض قيم إدخال المستخدم التي تم تمريرها وإغلاق' الماسح الضوئي '.

انتاج |



في هذا الإخراج ، يمكن أن يعني ضمنيًا إنشاء كائن نسخ وعرضه وفقًا لذلك.

الأسلوب 2: نسخ كائن في Java عبر طريقة 'clone ()'

ال ' استنساخ () 'طريقة' java.lang.Object تأخذ الفئة 'كائنًا كمعامل ، وتقوم بإنشاء نسخة منه. يمكن تنفيذ هذه الطريقة لنسخ كائن بالإشارة إلى الكائن الذي تم إنشاؤه بالفعل (الذي يحتاج إلى نسخ) وطريقة 'clone ()'.

بناء الجملة

هدف. استنساخ ( )

تعطي هذه الطريقة نسخة من الكائن وترمي ' CloneNotSupportedException 'إذا كانت فئة الكائن لا تنفذ / تطبق واجهة' Cloneable '.

مثال
انتقل من خلال أسطر التعليمات البرمجية أدناه:

عام فصل CopyObject الأدوات قابل للاستنساخ {
int بطاقة تعريف ؛
خيط مدينة ؛
CopyObject ( int بطاقة تعريف و خيط مدينة ) {
هذا . بطاقة تعريف = بطاقة تعريف ؛
هذا . مدينة = مدينة ؛
}
عام فارغ عرض ( ) {
نظام. خارج . println ( 'المعرف ->' + هذا . بطاقة تعريف ) ؛
نظام. خارج . println ( 'المدينة ->' + هذا . مدينة ) ؛
}
عام ثابتة فارغ رئيسي ( خيط [ ] أرجس ) رميات CloneNotSupportedException {
إدخال الماسح الضوئي = جديد الماسح الضوئي ( نظام. في ) ؛
نظام. خارج . println ( 'أدخل المعرف:' ) ؛
int بطاقة تعريف = مدخل. التالي ( ) ؛
نظام. خارج . println ( 'أدخل المدينة:' ) ؛
خيط مدينة = مدخل. التالي ( ) ؛
كائن CopyObject1 = جديد CopyObject ( بطاقة تعريف و مدينة ) ؛
نظام. خارج . println ( 'الكائن الافتراضي ->' ) ؛
الكائن 1. عرض ( ) ؛
نظام. خارج . println ( 'كائن منسوخ ->' ) ؛
كائن CopyObject2 = ( CopyObject ) الكائن 1. استنساخ ( ) ؛
الكائن 2. عرض ( ) ؛
مدخل. يغلق ( ) ؛
} }

وفقًا لكتلة التعليمات البرمجية أعلاه ، قم بتنفيذ الخطوات المذكورة أدناه:

  • تذكر الأساليب التي تمت مناقشتها لتحديد فئة ، وتحديد متغيرات العضو ، وإنشاء مُنشئ فئة معلمات (تخصيص القيم التي تم تمريرها) ، وتحديد وظيفة لعرض القيم ، على التوالي.
  • في هذه اللحظة ' رئيسي() '، بالمثل ، يقوم المستخدم بإدخال القيم وتمرير هذه القيم إلى كائن الفئة الذي تم إنشاؤه وعرضها عبر الوظيفة المقابلة.
  • بعد ذلك ، ' استنساخ () يدخل الأسلوب 'حيز التنفيذ المرتبط بالكائن الذي تم إنشاؤه بالفعل لإنشاء كائن نسخ.
  • أخيرًا ، اعرض محتويات الكائن المنسوخة أيضًا عبر الوظيفة التي تمت مناقشتها.

انتاج |

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

خاتمة

يمكن نسخ كائن في Java باستخدام ' منشئ النسخ '، أو ال ' استنساخ () ' طريقة. الأسلوب السابق ينسخ الكائن بأخذ الكائن الذي تم إنشاؤه بالفعل كوسيطة منشئ نسخة. يرتبط النهج الأخير مباشرة بكائن الفئة الذي تم إنشاؤه. أظهرت هذه الكتابة طرق نسخ كائن في Java.