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