জাভার Enum ক্লাস সাধারণত নির্দিষ্ট সীমার মানগুলোর একটি সেট সংজ্ঞায়িত করার জন্য ব্যবহৃত হয়। জেনেরিক্সের সাথে Enum ক্লাস ব্যবহার করলে Type-Safe এবং Reusable কোড তৈরি করা যায়। এর মাধ্যমে বিভিন্ন ধরনের Enum মানগুলোর জন্য একটি সাধারণ ক্লাস বা মেথড তৈরি করা সম্ভব হয়।
Generics এবং Enum এর ব্যবহার
Generics এর মাধ্যমে Enum ক্লাসের ডিফাইনেশন
Generics ব্যবহার করে এমন একটি ক্লাস তৈরি করা যায় যা শুধুমাত্র Enum টাইপের জন্য কাজ করবে। উদাহরণস্বরূপ:
public class EnumHandler<T extends Enum<T>> {
private T value;
public EnumHandler(T value) {
this.value = value;
}
public T getValue() {
return value;
}
public void printEnumDetails() {
System.out.println("Enum Name: " + value.name());
System.out.println("Enum Ordinal: " + value.ordinal());
}
}
ব্যবহারের উদাহরণ:
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public class Main {
public static void main(String[] args) {
EnumHandler<Day> dayHandler = new EnumHandler<>(Day.FRIDAY);
dayHandler.printEnumDetails();
}
}
আউটপুট:
Enum Name: FRIDAY
Enum Ordinal: 4
Generics এবং Enum এর মাধ্যমে সাধারণ মেথড তৈরি
Generic মেথডে Enum মানগুলোর ব্যবহার:
public class EnumUtility {
public static <T extends Enum<T>> void printAllValues(Class<T> enumClass) {
for (T value : enumClass.getEnumConstants()) {
System.out.println(value);
}
}
}
ব্যবহার:
enum Color {
RED, GREEN, BLUE
}
public class Main {
public static void main(String[] args) {
EnumUtility.printAllValues(Color.class);
}
}
আউটপুট:
RED
GREEN
BLUE
Enum এবং Generics এর মাধ্যমে Key-Value Mapping
Enum ক্লাসের সঙ্গে জেনেরিক ম্যাপিং তৈরি:
import java.util.EnumMap;
enum Fruit {
APPLE, BANANA, ORANGE
}
public class EnumMapExample {
public static void main(String[] args) {
EnumMap<Fruit, String> fruitColors = new EnumMap<>(Fruit.class);
fruitColors.put(Fruit.APPLE, "Red");
fruitColors.put(Fruit.BANANA, "Yellow");
fruitColors.put(Fruit.ORANGE, "Orange");
fruitColors.forEach((key, value) ->
System.out.println(key + ": " + value)
);
}
}
আউটপুট:
APPLE: Red
BANANA: Yellow
ORANGE: Orange
Bounded Generics এবং Enum
Generics এর মাধ্যমে Enum সীমাবদ্ধতা তৈরি করা:
public class EnumValidator<T extends Enum<T>> {
private T value;
public EnumValidator(T value) {
this.value = value;
}
public boolean isValueInEnum(T[] validValues) {
for (T validValue : validValues) {
if (value == validValue) {
return true;
}
}
return false;
}
}
ব্যবহার:
enum Status {
ACTIVE, INACTIVE, PENDING
}
public class Main {
public static void main(String[] args) {
Status status = Status.ACTIVE;
EnumValidator<Status> validator = new EnumValidator<>(status);
boolean isValid = validator.isValueInEnum(new Status[]{Status.ACTIVE, Status.PENDING});
System.out.println("Is Valid: " + isValid);
}
}
আউটপুট:
Is Valid: true
Enum এবং Generics এর মাধ্যমে Comparator তৈরি
Generic Comparator এর মাধ্যমে Enum Sorting:
import java.util.Arrays;
import java.util.Comparator;
public class EnumSorter<T extends Enum<T>> {
public void sortEnumValues(T[] values) {
Arrays.sort(values, Comparator.comparing(Enum::name));
}
}
ব্যবহার:
enum Priority {
HIGH, MEDIUM, LOW
}
public class Main {
public static void main(String[] args) {
Priority[] priorities = Priority.values();
EnumSorter<Priority> sorter = new EnumSorter<>();
sorter.sortEnumValues(priorities);
for (Priority priority : priorities) {
System.out.println(priority);
}
}
}
আউটপুট:
HIGH
LOW
MEDIUM
- Generics এবং Enum একত্রে ব্যবহার করলে টাইপ-সেফ এবং পুনঃব্যবহারযোগ্য কোড তৈরি করা সহজ হয়।
- Bounded Type Parameters ব্যবহার করে Enum মানগুলোর মধ্যে সীমাবদ্ধতা আরোপ করা যায়।
- EnumMap, Generic Utility Class, এবং Generic Comparator এর মাধ্যমে Enum গুলো আরও সহজে পরিচালনা করা যায়।
- এই কৌশলগুলো বড় প্রজেক্টে Enum ব্যবস্থাপনাকে আরও কার্যকর এবং নিরাপদ করে তোলে।
Content added By
Read more