Java Generics টাইপ নিরাপত্তা (type safety) নিশ্চিত করার মাধ্যমে কম্পাইল-টাইমে (compile-time) এরর প্রতিরোধ করে। Generics ব্যবহার করলে কোড লিখার সময় কম্পাইলার নির্দিষ্ট টাইপ যাচাই করে, ফলে টাইপ-রিলেটেড রানটাইম এরর কমে।
Generics ব্যবহার না করার ফলে সমস্যা
Generics ছাড়া যদি একটি কালেকশনে বিভিন্ন ধরনের ডেটা রাখা হয়, তখন টাইপ মিসম্যাচের কারণে রানটাইমে এরর হতে পারে।
import java.util.ArrayList;
import java.util.List;
public class WithoutGenerics {
public static void main(String[] args) {
List list = new ArrayList(); // টাইপ নির্দিষ্ট করা হয়নি
list.add("Java");
list.add(123); // ভিন্ন টাইপ যোগ করা হলো
for (Object obj : list) {
// টাইপ ক্যাস্টিং প্রয়োজন
String str = (String) obj; // রানটাইমে ClassCastException হবে
System.out.println(str);
}
}
}
সম্ভাব্য এরর:
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
Generics ব্যবহার করে Compile-Time Errors প্রতিরোধ
Generics ব্যবহার করলে টাইপ মিসম্যাচ কম্পাইল-টাইমেই ধরা পড়ে।
import java.util.ArrayList;
import java.util.List;
public class WithGenerics {
public static void main(String[] args) {
List<String> list = new ArrayList<>(); // টাইপ নির্দিষ্ট করা হয়েছে
list.add("Java");
// list.add(123); // কম্পাইল-টাইমে এরর হবে
for (String str : list) {
System.out.println(str); // টাইপ ক্যাস্টিং প্রয়োজন নেই
}
}
}
উদাহরণ:
টাইপ সেফ লিস্ট:
List<Integer> numbers = new ArrayList<>(); numbers.add(10); numbers.add(20); // numbers.add("String"); // কম্পাইল-টাইমে এরর দেখাবেGeneric মেথড ব্যবহার:
public static <T> void printArray(T[] array) { for (T element : array) { System.out.println(element); } } public static void main(String[] args) { Integer[] intArray = {1, 2, 3}; String[] strArray = {"A", "B", "C"}; printArray(intArray); // সঠিক কাজ করবে printArray(strArray); // সঠিক কাজ করবে }
Generics এর Compile-Time Checking সুবিধা
ভুল টাইপ যুক্ত করা প্রতিরোধ:
Generics নিশ্চিত করে যে ভুল টাইপের ডেটা একটি কালেকশনে যুক্ত করা যাবে না।List<Double> prices = new ArrayList<>(); prices.add(10.5); // prices.add("String"); // কম্পাইল-টাইমে এরর- টাইপ মিসম্যাচ দ্রুত ধরা যায়:
টাইপ সঠিকভাবে নির্ধারণ করার ফলে টাইপ মিসম্যাচ কম্পাইল-টাইমে ধরা পড়ে, রানটাইমে নয়। কোড মেইন্টেইনেবল এবং ক্লিন:
টাইপ ক্যাস্টিংয়ের প্রয়োজন না থাকায় কোড আরও পাঠযোগ্য হয়।Map<Integer, String> map = new HashMap<>(); map.put(1, "Java"); map.put(2, "Python"); String value = map.get(1); // টাইপ ক্যাস্টিং প্রয়োজন নেই
Java Generics টাইপ নির্দিষ্ট করার মাধ্যমে কম্পাইল-টাইমে এরর প্রতিরোধ করতে কার্যকর। এটি টাইপ ক্যাস্টিংয়ের প্রয়োজনীয়তা কমায় এবং টাইপ সেফ কোড নিশ্চিত করে, যা সফটওয়্যারের মান উন্নত করে। Generics ব্যবহার করে কোড আরও সুনির্দিষ্ট, নিরাপদ এবং মেইন্টেইনেবল করা যায়।
Read more