প্যারামিট্রিক ধরণের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হ'ল পলিমারফিক অ্যালগরিদমগুলি লেখার ক্ষমতা, অর্থাৎ আলগোরিদিমগুলি যা কোনও প্যারামিটারের মান নির্বিশেষে কোনও ডেটা স্ট্রাকচারে কাজ করে Arrays.sort()
।
জেনেরিক্স সহ, এটি ওয়াইল্ডকার্ড ধরণের মাধ্যমে সম্পন্ন হয়েছে:
<E extends Comparable<E>> void sort(E[]);
সত্যিকারের উপকারী হওয়ার জন্য, ওয়াইল্ডকার্ড ধরণের জন্য ওয়াইল্ডকার্ড ক্যাপচারের প্রয়োজন হয় এবং এর জন্য একটি টাইপ প্যারামিটারের ধারণা প্রয়োজন। জাভাতে অ্যারে যুক্ত করার সময় এগুলির মধ্যে কোনওটিই পাওয়া যায় নি, এবং রেফারেন্স ধরণের কোভেরিয়েন্টের অ্যারেগুলি তৈরি করে পলিমারফিক আলগোরিদিমগুলিকে অনুমতি দেওয়ার জন্য আরও সহজ উপায়ের অনুমতি দেওয়া হয়েছিল:
void sort(Comparable[]);
যাইহোক, এই সরলতা স্ট্যাটিক টাইপ সিস্টেমে একটি ফাঁক খুলল:
String[] strings = {"hello"};
Object[] objects = strings;
objects[0] = 1; // throws ArrayStoreException
রেফারেন্স ধরণের অ্যারেতে প্রতিটি লেখার অ্যাক্সেসের একটি রানটাইম চেকের প্রয়োজন।
সংক্ষেপে, জেনারিকদের দ্বারা সংযুক্ত নতুন পদ্ধতির সাহায্যে টাইপ সিস্টেমটি আরও জটিল হয়ে ওঠে, তবে আরও পরিসংখ্যানগতভাবে সুরক্ষিত থাকে, তবে পুরানো পদ্ধতির সহজ ছিল, এবং কম স্ট্যাটিকালি টাইপ নিরাপদ ছিল। ভাষার ডিজাইনাররা সহজ পদ্ধতির পক্ষে বেছে নিয়েছিলেন, টাইপ সিস্টেমে একটি ছোট লুফোল বন্ধ করার চেয়ে আরও গুরুত্বপূর্ণ কাজ করার কারণে এটি খুব কমই সমস্যার সৃষ্টি করে। পরে, যখন জাভাটি প্রতিষ্ঠিত হয়েছিল, এবং টিপিংয়ের যত্ন নেওয়া দরকার ছিল তখন জেনেরিকদের জন্য এটি সঠিকভাবে করার মতো সংস্থান ছিল (তবে অ্যারেগুলির জন্য এটি পরিবর্তন করলে জাভা প্রোগ্রামগুলি ভেঙে যেতে পারে)।