"ঠিক আছে, অবশেষে - জেনেরিকের আরেকটি ছোট পাঠ।"

"এখন আমি আপনাকে বলতে যাচ্ছি কিভাবে টাইপ ইরেজারের কাছাকাছি যেতে হয়।"

"আহ. এটা এমন কিছু যা আমি জানতে চাই।"

"আপনি সম্ভবত ইতিমধ্যেই জানেন, জাভাতে একটি ক্লাস টাইপ আছে, যা একটি বস্তুর ক্লাসের রেফারেন্স সংরক্ষণ করতে ব্যবহৃত হয়৷ "এখানে কিছু উদাহরণ রয়েছে:"

উদাহরণ
Class clazz = Integer.class;
Class clazz = String.class;
Class clazz = "abc".getClass();

"আহ।"

"কিন্তু আপনি সম্ভবত জানেন না যে ক্লাস নামে একটি জেনেরিক ক্লাস আছে। এবং জেনেরিক ক্লাস ভেরিয়েবল শুধুমাত্র টাইপ আর্গুমেন্ট দ্বারা নির্ধারিত টাইপের রেফারেন্স সংরক্ষণ করতে পারে।  এখানে কিছু উদাহরণ রয়েছে:"

উদাহরণ
Class<Integer> clazz1 = Integer.class; // Everything works well
Class<String> clazz2 = Integer.class; // Compilation error
Class<String> clazz1 = String.class; // Everything works well
Class<String> clazz2 = int.class; // Compilation error
Class<? extends String> clazz1 = "abc".getClass(); // Everything works well
Class<Object> clazz2 = "abc".getClass(); // Compilation error

"কেন এটা এমন কাজ করে?"

"আচ্ছা, পূর্ণসংখ্যার (অর্থাৎ Integer.class) ক্লাস ক্ষেত্রের মান আসলে একটি Class<Integer> অবজেক্ট।"

"তবে চলুন চালিয়ে যাওয়া যাক।"

"ক্লাস<T> — একটি জেনেরিক এবং এই ধরনের ভেরিয়েবলটি শুধুমাত্র T টাইপের একটি মান ধরে রাখতে পারে এই বিষয়টির সুবিধা গ্রহণ করে, আপনি সেগুলিকে এইভাবে একটি চটকদারভাবে একসাথে রাখতে পারেন:"

উদাহরণ
class Zoo<T>
{
 Class<T> clazz;
 ArrayList<T> animals = new ArrayList<T>

 Zoo(Class<T> clazz)
 {
  this.clazz = clazz;
 }

 public T createNewAnimal()
 {
  T animal = clazz.newInstance();
  animals.add(animal);
  return animal
 }
}
ব্যবহার
Zoo<Tiger> zoo = new Zoo<Tiger>(Tiger.class); // This is where we pass the type!
Tiger tiger = zoo.createNewAnimal();

"এটি একটি অতি কৌশলী কৌশল নয় - আমরা কেবল পছন্দসই ধরণের একটি রেফারেন্স পাস করছি৷ কিন্তু, যদি আমরা ক্লাস<T> এর পরিবর্তে ক্লাস ব্যবহার করি, তাহলে কেউ ভুলবশত দুটি ভিন্ন প্রকার পাস করতে পারে: একটি টি যুক্তি হিসাবে , এবং অন্যটি কনস্ট্রাক্টরের কাছে।"

"আহ। আমি বুঝতে পেরেছি। অতিপ্রাকৃত কিছুই ঘটেনি, তবে ভয়ানক কিছুও হয়নি। টাইপের একটি রেফারেন্স আছে, এবং আপনি এটি ব্যবহার করতে পারেন। এটি কাজ করে এবং এটি আমার জন্য যথেষ্ট।"

"ছেলেটি একজন মানুষ হয়ে ওঠে! 'এটি কাজ করে এবং এটি আমার জন্য যথেষ্ট ভাল' প্রায়শই সেরা বিকল্প।"

"এখন জাভাতে অনেক কিছু পুনরায় করা যেতে পারে, তবে আমাদের পুরানো কোডের সাথে সামঞ্জস্য বজায় রাখতে হবে।"

"হাজার হাজার জনপ্রিয় পলিশড লাইব্রেরি আজ জাভার জন্য সবচেয়ে শক্তিশালী যুক্তি। এইভাবে, জাভা পশ্চাদপদ সামঞ্জস্য বজায় রেখে সবচেয়ে জনপ্রিয় ভাষা থেকে যায়, তাই এটি আমূল উদ্ভাবন প্রবর্তন করতে পারে না।"

"ঠিক আছে, আমি ব্ল্যাকজ্যাক দিয়ে আমার নিজের জাভা তৈরি করতে যাচ্ছি এবং..."

"ঠিক আছে, আমি ইতিমধ্যেই দিন থেকে ক্লান্ত। পরের বার পর্যন্ত।"

"বিদায়, ঋষি, এবং এমন একটি আকর্ষণীয় পাঠের জন্য ধন্যবাদ।"