"আরেকটি দুর্দান্ত বিষয়।"

"সারপ্রাইজ আসতেই থাকে! এটা কি আমার জন্মদিন?"

"আজ, আমি আপনাকে জেনেরিক্স সম্পর্কে বলব। জেনেরিকগুলি হল এমন ধরনের যেগুলির একটি প্যারামিটার আছে। জাভাতে, কন্টেইনার ক্লাসগুলি আপনাকে তাদের ভিতরের বস্তুর ধরন নির্দেশ করতে দেয়।"

"যখন আমরা একটি জেনেরিক ভেরিয়েবল ঘোষণা করি, আমরা একটির পরিবর্তে দুটি প্রকার নির্দেশ করি: পরিবর্তনশীল প্রকার এবং এটি যে ডেটা সংরক্ষণ করে তার প্রকার।"

"ArrayList হল একটি ভাল উদাহরণ। যখন আমরা একটি নতুন ArrayList অবজেক্ট তৈরি করি, তখন এই তালিকার ভিতরে যে মানগুলি সংরক্ষণ করা হবে তা নির্দেশ করা সুবিধাজনক।"

কোড ব্যাখ্যা
ArrayList<String> list = new ArrayList<String>();
নামক একটি ArrayList ভেরিয়েবল তৈরি করুন list
এটিতে একটি ArrayList অবজেক্ট বরাদ্দ করুন।
এই তালিকাটি শুধুমাত্র স্ট্রিং বস্তু সংরক্ষণ করতে পারে।
ArrayList list = new ArrayList();
নামক একটি ArrayList ভেরিয়েবল তৈরি করুন list
এটিতে একটি ArrayList অবজেক্ট বরাদ্দ করুন। এই তালিকা যেকোনো মান সংরক্ষণ করতে পারে ।
ArrayList<Integer> list = new ArrayList<Integer>();
নামক একটি ArrayList ভেরিয়েবল তৈরি করুন list
এটিতে একটি ArrayList অবজেক্ট বরাদ্দ করুন।
এই তালিকা শুধুমাত্র সঞ্চয় করতে পারে Integerএবং intমান.

"অতি আকর্ষণীয় শোনাচ্ছে। বিশেষ করে যে কোনো ধরনের মান সংরক্ষণের অংশ ।"

"এটি শুধুমাত্র একটি ভাল জিনিস বলে মনে হচ্ছে। বাস্তবে, যদি আমরা একটি পদ্ধতিতে একটি ArrayList এ স্ট্রিং রাখি এবং তারপরে অন্য পদ্ধতিতে সংখ্যা ধারণ করার আশা করি, তাহলে প্রোগ্রামটি ক্র্যাশ হয়ে যাবে (একটি ত্রুটির সাথে শেষ)।"

"আমি দেখি."

"আপাতত, আমরা টাইপ প্যারামিটার দিয়ে আমাদের নিজস্ব ক্লাস তৈরি করব না। আমরা শুধু বিদ্যমান ক্লাসগুলি ব্যবহার করব।"

"কোনও ক্লাস কি টাইপ প্যারামিটার হতে পারে, এমনকি আমি যেটা লিখি?"

"হ্যাঁ। আদিম প্রকার ব্যতীত যেকোন প্রকার। সকল প্রকার পরামিতি অবশ্যই অবজেক্ট ক্লাস থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হতে হবে।"

" আপনি বলতে চাচ্ছেন আমি ArrayList<int> লিখতে পারি না ? "

"আসলে, আপনি পারবেন না। কিন্তু জাভা ডেভেলপাররা প্রতিটি আদিম প্রকারের জন্য র‍্যাপার ক্লাস লিখেছে। এই ক্লাসগুলি অবজেক্টের উত্তরাধিকারী । এটি দেখতে এইরকম:"

আদিম প্রকার ক্লাস তালিকা
int পূর্ণসংখ্যা ArrayList< পূর্ণসংখ্যা >
দ্বিগুণ ডাবল অ্যারেলিস্ট< ডাবল >
বুলিয়ান বুলিয়ান ArrayList< বুলিয়ান >
চর চরিত্র অ্যারেলিস্ট< ক্যারেক্টার >
বাইট বাইট অ্যারেলিস্ট< বাইট >

"আপনি সহজেই আদিম ক্লাস এবং তাদের এনালগ (র্যাপার ক্লাস) একে অপরকে বরাদ্দ করতে পারেন:"

উদাহরণ
int a = 5;
Integer b = a;
int c = b;
Character c = 'c';  //the literal c is a char
char d = c;
Byte b = (byte) 77;  // The literal 77 is an int
Boolean isOk = true;  // the literal true is a boolean
Double d = 1.0d;  // The literal 1.0d is a double

"দারুণ। আমি মনে করি আমি আরো প্রায়ই ArrayList ব্যবহার করার চেষ্টা করব।"