ভাল, অনুপ্রেরণা (পিছনের সামঞ্জস্য) উভয় একটি সুবিধা এবং অসুবিধা। এটি অসুবিধে হয় কারণ আমরা সকলেই পুনরায় সংশোধনযোগ্য প্রকারগুলি পছন্দ করতে চাই তবে প্রদানের মূল্য বেশি ছিল। সি # তে নকশার পছন্দগুলি বিবেচনা করুন। তাদের পুনরায় সংশোধনযোগ্য প্রকার রয়েছে তবে এখন তাদের সদৃশ এপিআই রয়েছে। সুতরাং, একটি জাভা এপিআই কল্পনা করুন যেখানে আমাদের প্রতিটি প্যারামিটারাইজড শ্রেণীর জন্য নকল API রয়েছে। এখন নিজেকে উত্তরাধিকার শ্রেণি থেকে নতুন জেনেরিক ক্লাসে কয়েক হাজার লাইনের কোডের পোর্টিং করুন picture এখন, কে ডুপ্লিকেট API গুলি অসুবিধা বিবেচনা করবেন না? তবে ওহে, তাদের পুনরায় সংশোধনযোগ্য প্রকার রয়েছে!
সুতরাং, প্রধান প্রেরণা ছিল "বিপ্লব নয়, বিপ্লব"। এবং যৌক্তিকভাবে, প্রতিটি সিদ্ধান্তের বাণিজ্য রয়েছে।
উল্লিখিত অন্যান্য অসুবিধাগুলির পাশাপাশি, আমরা এও যুক্ত করতে পারি যে টাইপ ইরেজরের সংকলনের সময়টি যুক্তিযুক্ত হওয়া কঠিন হতে পারে, যেহেতু নির্দিষ্ট প্রকারগুলি সরানো হবে তা পরিষ্কার নয় এবং এর ফলে ত্রুটিগুলি খুঁজে পাওয়া খুব অদ্ভুত এবং শক্ত হয়ে যায় to
ব্রিজ পদ্ধতির অস্তিত্ব (বাইনারি সামঞ্জস্য রাখতে এই সংকলক সিন্টেক্সিকভাবে উত্পন্ন পদ্ধতিগুলি) অসুবিধা হিসাবেও দেখা যায়। এবং এগুলি পূর্ববর্তী অনুচ্ছেদে উল্লিখিত ত্রুটিগুলির একটি কারণ অবিকল হতে পারে।
বড় অসুবিধাগুলি ইতিমধ্যে স্পষ্ট সত্য থেকে উদ্ভূত যে জেনেরিক ধরণের জন্য একক শ্রেণি নেই এবং একাধিক শ্রেণি নেই। অন্য একটি উদাহরণ হিসাবে বিবেচনা করুন যে একই জেনেরিক শ্রেণি সহ একটি পদ্ধতি ওভারলোডিং জাভাতে ব্যর্থ হয়:
public void doSomething(List<One>);
public void doSomething(List<Two>);
এমন কিছু যা পুনরায় সংশোধনযোগ্য প্রকারের অসুবিধা হিসাবে দেখা যেতে পারে (কমপক্ষে সি # তে) এটি কোড বিস্ফোরণ ঘটায় । উদাহরণস্বরূপ List<int>একটি শ্রেণি, এবং একটি List<double>অন্যরকম একেবারে আলাদা, কারণ এটি a List<string>এবং a List<MyType>। সুতরাং ক্লাসগুলি রানটাইম হিসাবে সংজ্ঞায়িত করতে হবে, ক্লাসগুলির একটি বিস্ফোরণ ঘটায় এবং মূল্যবান সংস্থানগুলি উত্পন্ন করার সময় সেগুলি গ্রহণ করে।
new T()অন্য একটি জবাতে জাভাতে কোনও সংজ্ঞা দেওয়া সম্ভব নয় এই বিষয়টি সম্পর্কে , এটি কেবল আকর্ষণীয় বিষয় মুছে ফেলার বিষয় নয় তা বিবেচনা করাও আকর্ষণীয়। এটি একটি ডিফল্ট নির্মাণকারীর অস্তিত্বও প্রয়োজন, এজন্য সি # এর জন্য "নতুন বাধা" প্রয়োজন requires (দেখুন, কেন নতুন টি () জাভাতে সম্ভব নয় , অ্যালেক্স বাকলির দ্বারা)।
Tএর জন্য, আপনিClass<T>সকলের জন্য কোডের একটি অনুলিপি পাবেনT; প্লাস প্রতিটি ব্যবহৃত মূল্যের জন্য অতিরিক্ত ব্যবহৃত অনুলিপিT।