ستوضح هذه المقالة طرق نسخ كائن في 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 '.
مثال
انتقل من خلال أسطر التعليمات البرمجية أدناه:
int بطاقة تعريف ؛
خيط مدينة ؛
CopyObject ( int بطاقة تعريف و خيط مدينة ) {
هذا . بطاقة تعريف = بطاقة تعريف ؛
هذا . مدينة = مدينة ؛
}
عام فارغ عرض ( ) {
نظام. خارج . println ( 'المعرف ->' + هذا . بطاقة تعريف ) ؛
نظام. خارج . println ( 'المدينة ->' + هذا . مدينة ) ؛
}
عام ثابتة فارغ رئيسي ( خيط [ ] أرجس ) رميات CloneNotSupportedException {
إدخال الماسح الضوئي = جديد الماسح الضوئي ( نظام. في ) ؛
نظام. خارج . println ( 'أدخل المعرف:' ) ؛
int بطاقة تعريف = مدخل. التالي ( ) ؛
نظام. خارج . println ( 'أدخل المدينة:' ) ؛
خيط مدينة = مدخل. التالي ( ) ؛
كائن CopyObject1 = جديد CopyObject ( بطاقة تعريف و مدينة ) ؛
نظام. خارج . println ( 'الكائن الافتراضي ->' ) ؛
الكائن 1. عرض ( ) ؛
نظام. خارج . println ( 'كائن منسوخ ->' ) ؛
كائن CopyObject2 = ( CopyObject ) الكائن 1. استنساخ ( ) ؛
الكائن 2. عرض ( ) ؛
مدخل. يغلق ( ) ؛
} }
وفقًا لكتلة التعليمات البرمجية أعلاه ، قم بتنفيذ الخطوات المذكورة أدناه:
- تذكر الأساليب التي تمت مناقشتها لتحديد فئة ، وتحديد متغيرات العضو ، وإنشاء مُنشئ فئة معلمات (تخصيص القيم التي تم تمريرها) ، وتحديد وظيفة لعرض القيم ، على التوالي.
- في هذه اللحظة ' رئيسي() '، بالمثل ، يقوم المستخدم بإدخال القيم وتمرير هذه القيم إلى كائن الفئة الذي تم إنشاؤه وعرضها عبر الوظيفة المقابلة.
- بعد ذلك ، ' استنساخ () يدخل الأسلوب 'حيز التنفيذ المرتبط بالكائن الذي تم إنشاؤه بالفعل لإنشاء كائن نسخ.
- أخيرًا ، اعرض محتويات الكائن المنسوخة أيضًا عبر الوظيفة التي تمت مناقشتها.
انتاج |
في هذه النتيجة ، يمكن ملاحظة أن قيم مدخلات المستخدم يتم إرجاعها مرتين بنتائج متطابقة ، مما يضمن نسخ كائن الفئة بشكل مناسب.
خاتمة
يمكن نسخ كائن في Java باستخدام ' منشئ النسخ '، أو ال ' استنساخ () ' طريقة. الأسلوب السابق ينسخ الكائن بأخذ الكائن الذي تم إنشاؤه بالفعل كوسيطة منشئ نسخة. يرتبط النهج الأخير مباشرة بكائن الفئة الذي تم إنشاؤه. أظهرت هذه الكتابة طرق نسخ كائن في Java.