আপনি একেবারে ব্যবহার করতে হবে clone? বেশিরভাগ লোক সম্মত হন যে জাভা cloneভেঙে গেছে।
নকশায় জোশ ব্লচ - কপি নির্মাণকারী বনাম ক্লোনিং
আপনি যদি আমার বইটিতে ক্লোনিং সম্পর্কিত আইটেমটি পড়ে থাকেন, বিশেষত আপনি যদি লাইনের মধ্যে পড়ে থাকেন তবে আপনি বুঝতে পারবেন যে আমি মনে করি cloneগভীরভাবে ভেঙে গেছে। [...] এটি লজ্জাজনক যা Cloneableভেঙে গেছে, তবে এটি ঘটে।
আপনি তার বইয়ে বিষয়ে আরো আলোচনা পড়তে পারে ওভাররাইড: কার্যকরী জাভা 2nd সংস্করণ, আইটেম 11 clonejudiciously । তিনি পরিবর্তে একটি অনুলিপি নির্মাণকারী বা অনুলিপি কারখানা ব্যবহার করার পরামর্শ দেন।
তিনি কীভাবে পৃষ্ঠাগুলির পাতাগুলি লিখতে চেয়েছিলেন, যদি আপনার মনে হয় আপনার অবশ্যই প্রয়োগ করা উচিত clone। কিন্তু তিনি এটি দিয়ে বন্ধ করেছেন:
এই সমস্ত জটিলতা কি আসলেই প্রয়োজনীয়? কদাচ। যদি আপনি প্রয়োগ করে এমন কোনও শ্রেণি প্রসারিত করেন Cloneableতবে ভাল আচরণের cloneপদ্ধতিটি প্রয়োগ করা ছাড়া আপনার কাছে বিকল্প নেই । অন্যথায়, আপনি অবজেক্ট অনুলিপি করার বিকল্প উপায় সরবরাহ করা বা কেবল ক্ষমতা সরবরাহ না করার চেয়ে ভাল ।
জোর তার ছিল, আমার নয়।
যেহেতু আপনি স্পষ্ট করে দিয়েছিলেন যে বাস্তবায়নের পরিবর্তে আপনার কাছে খুব কম উপায় আছে clone, তাই আপনি এই ক্ষেত্রে যা করতে পারেন তা এখানে: নিশ্চিত করুন MyObject extends java.lang.Object implements java.lang.Cloneable। যদি সেই ক্ষেত্রে, তাহলে আপনি গ্যারান্টি পারেন যে আপনি হবে কখনও একটি ধরা CloneNotSupportedException। কারও AssertionErrorকারও পরামর্শ অনুসারে ছুড়ে দেওয়া যুক্তিসঙ্গত বলে মনে হয়, তবে আপনি এমন একটি মন্তব্যও যুক্ত করতে পারেন যা ব্যাখ্যা করে যে কেন এই বিশেষ ক্ষেত্রে ক্যাচ ব্লকটি কখনই প্রবেশ করা হবে না ।
বিকল্প হিসাবে, অন্যরা যেমন পরামর্শ দিয়েছে, আপনি সম্ভবত cloneকল না করে প্রয়োগ করতে পারবেন super.clone।
CloneableতবেAssertionErrorকেবল একটি সরল পরিবর্তে একটি নিক্ষেপ করাErrorকিছুটা বেশি উদ্বেগজনক।