نسخة إرجاع Java لإخفاء التغييرات المستقبلية

StackOverflow https://stackoverflow.com/questions/29820

  •  09-06-2019
  •  | 
  •  

سؤال

في Java، لنفترض أن لديك فصلًا دراسيًا يلتف حول ملف ArrayList (أو أي مجموعة) من الكائنات.

كيف يمكنك إرجاع أحد هذه الكائنات بحيث لا يرى المتصل أي تغييرات مستقبلية على الكائن الذي تم إجراؤه في ArrayList؟

أي.تريد إرجاع نسخة عميقة من الكائن، لكنك لا تعرف ما إذا كان قابلاً للاستنساخ.

هل كانت مفيدة؟

المحلول

تحويل ذلك إلى المواصفات:
-أن الكائنات تحتاج إلى تنفيذ واجهة من أجل السماح بها في المجموعة شيء مثل ArrayList<ICloneable>()

ثم يمكنك التأكد من أنك تقوم دائمًا بعمل نسخة عميقة - يجب أن تحتوي الواجهة على طريقة مضمونة لإرجاع نسخة عميقة.

أعتقد أن هذا هو أفضل ما يمكنك القيام به.

نصائح أخرى

أحد الخيارات هو استخدام التسلسل.إليك مشاركة مدونة تشرح ذلك:

http://weblogs.java.net/blog/emcmanus/archive/2007/04/cloning_java_ob.html

أعتقد أنها إجابة واضحة:

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

أو إذا كان العنصر غير قابل للاستنساخ، فما عليك سوى الرجوع إلى خيار الإرجاع حسب المرجع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top