একটি জাভা enum হলো একটি ডেটা টাইপ যা কনস্ট্যান্টের একটি লিস্ট স্টোর করে। আপনি enum কীওয়ার্ড ব্যবহার করে একটি enum অবজেক্ট তৈরি করতে পারেন। Enum কনস্ট্যান্টগুলো একটি কমা-সেপারেটেড লিস্ট হিসেবে একটি ক্যার্লি ব্র্যাকেটের জোড়ার মধ্যে দেখায়।
একটি enum, যা enumeration-এর শর্ট ফর্ম, হলো একটি ডেটা টাইপ যার একটি ফিক্সড সেট অফ পসিবল ভ্যালু থাকে।
Enums দরকারী যদি আপনি এমন একটি ভ্যালু সাথে কাজ করছেন যেটি শুধু একটি স্পেসিফিক ভ্যালু ধारण করা উচিত যা একটি ভ্যালু লিস্টের মধ্যে থাকে। উদাহরণস্বরূপ, একটি enum ব্যবহার করা হয় যদি আপনি একটি স্টোরে বিক্রি হয় এমন কফি সাইজের লিস্ট স্টোর করতে চান।
এই টিউটোরিয়াল জাভাতে enums-এর বেসিকস gjennom যাবে। আমরা একটি জাভা প্রোগ্রামে enum ক্লাসের কিছু উদাহরণ রেফার করব আপনাকে শুরু করতে সাহায্য করার জন্য।
জাভা Enum সিনট্যাক্স
একটি জাভা enum কনস্ট্যান্টের একটি লিস্ট রিপ্রেজেন্ট করে। একটি enum থেকে অ্যাসাইন করা একটি ভেরিয়েবল শুধু enum-এ দেখা যেতে পারে এমন একটি ভ্যালু ধারণ করতে পারে। Enums ডেভেলপারদের ডেটা স্টোর করতে সাহায্য করে যা তারা জানে পরিবর্তন হবena।
ধরি আপনি ডिसাইড করেন যে একটি জাভা ভেরিয়েবল যা ইমপ্লয়ি পে গ্রেড স্টোর করে সেটি শুধু পাঁচটি ভ্যালুর একটা ধারণ করতে পারবে। অথবা, আপনি ডিসাইড করেন যে একটি ভেরিয়েবল যা ইমপ্লয়ি কন্ট্রাক্ট স্টোর করে সেটি শুধু Part-time, Full-time, অথবা Zero-hours স্টোর করতে পারবে। এই কেসগুলোতে, আপনি ডেটা স্টোর করতে enum ব্যবহার করতে চাবেন।
Enums "enum" টাইপ ব্যবহার করে ডিক্লেয়ার করা হয়। "enum" কীওয়ার্ডের সিনট্যাক্স এখানে:
enum name { VALUE1, VALUE2, VALUE3 } এই সিনট্যাক্স ব্রেক ডাউন করি:
- enum আমাদের প্রোগ্রামকে বলে আমরা একটি এনুমারেশন ডিক্লেয়ার করতে চাই।
- name আমাদের enum-এর নাম।
- VALUE1, VALUE2, VALUE3 হলো কনস্ট্যান্ট ভ্যালুর সেট যা আমাদের enum স্টোর করে। এই ভ্যালুগুলো সাধারণত আপারকেসে লেখা হয়।
জাভাতে Enums কেন ব্যবহার করবেন?
Enums ব্যবহার করলে আপনি একটি অ্যালগরিদমকে আপনার নিজের এবং কম্পিউটারের উভয়ের কাছে আরও রিডেবল ভাবে এক্সপ্রেস করতে পারেন।
একটি enum লিখতে কম্পিউটারকে বলে যে একটি ভেরিয়েবল শুধু একটি স্পেসিফিক সংখ্যক ভ্যালু ধারণ করতে পারে। এটি আপনাকে, কোডারকে, ও বলেছে যে এটিই কেস, যা আপনার কোড বুঝতে সহজ করে দেয়। আপনি যদি একটি ভেরিয়েবল দেখেন যা enum ব্যবহার করে, আপনি জানেন যে ভেরিয়েবলটি শুধু একটি লিমিটেড সংখ্যক ভ্যালুর একটা ধারণ করতে পারে।
অতিরিক্তভাবে, enums আপনাকে কনস্ট্যান্ট আরও ইফেক্টিভলি ব্যবহার করতে দেয়। ফ্যাক্ট, enum জাভাতে int কনস্ট্যান্ট রিপ্লেস করার জন্য ইন্ট্রোডিউস করা হয়েছিল, যেগুলো একাধিক লাইনে ফੈला থাকতো এবং পড়া কঠিন হতো। এখানে জাভাতে পুরনো int কনস্ট্যান্টের একটি উদাহরণ:
আমাদের কোড এই কনস্ট্যান্ট ডিক্লেয়ার করতে পাঁচ লাইন নেয়। কিন্তু enum ব্যবহার করে আমরা আমাদের কোড তিন লাইনে কমাতে পারি। নিচের উদাহরণে, আমরা enum কনস্ট্যান্টের একটি লিস্ট ডিক্লেয়ার করি:
class IntConstant { public final static int ECONOMY = 1; public final static int BUSINESS = 2; public final static int FIRST_CLASS = 3; } আমাদের কোড এই কনস্ট্যান্ট ডিক্লেয়ার করতে পাঁচ লাইন নেয়। কিন্তু enum ব্যবহার করে আমরা আমাদের কোড তিন লাইনে কমাতে পারি। নিচের উদাহরণে, আমরা enum কনস্ট্যান্টের একটি লিস্ট ডিক্লেয়ার করি:
class AirplaneClasses { ECONOMY, BUSINESS, FIRST_CLASS } এই কোড সিম্পল এবং পড়তে সহজ।
জাভা Enum ডিক্লেয়ার করা
আমরা একটি অ্যাপ বিল্ড করছি যা ভেটার স্টাফ ব্যবহার করে একটি কফি অর্ডার বेरিস্টাদের কাছে সাবমিট করতে পারবে একটি কফি শপে।
যখন একটি বেরিস্টা ড্রিংক সাইজের জন্য একটি ভ্যালু ইনসার্ট করবে, আমরা শুধু তিনটি পসিবল অপশন চাই। এই অপশনগুলো হলো: SMALL, REGULAR, এবং LARGE। আমরা একটি enum ব্যবহার করতে পারি ড্রিংকের পসিবল সাইজগুলো সেগুলোতে লিমিট করতে:
enum Sizes { SMALL, REGULAR, LARGE } এই উদাহরণে, আমরা Sizes নামে একটি enum ডিক্লেয়ার করেছি যার তিনটি পসিবল ভ্যালু আছে। এখন যেহেতু আমরা একটি enum ডিক্লেয়ার করেছি, আমরা আমাদের কোডে এর ভ্যালুগুলো রেফার করতে পারি।
জাভা Enum উদাহরণ
আমরা একটি প্রোগ্রাম লিখছি যা কাস্টমার কী সাইজ কফি অর্ডার করেছেন সেটি কনসোলে প্রিন্ট করে। এই ভ্যালুটি বেরিস্টা পড়বে যিনি কাস্টমারের ড্রিংক প্রিপেয়ার করবেন।
আমরা নিচের কোড ব্যবহার করতে পারি কাস্টমার অর্ডার করা কফির সাইজ কনসোলে প্রিন্ট করতে:
enum Sizes { SMALL, REGULAR, LARGE } class PrintSize { Sizes coffeeSize; public PrintSize(Sizes coffeeSize) { this.coffeeSize = coffeeSize; } public void placeOrder() { switch(coffeeSize) { case SMALL: System.out.println("This coffee should be small."); break; case REGULAR: System.out.println("This coffee should be REGULAR."); break; case LARGE: System.out.println("This coffee should be large."); break; } } } class Main { public static void main(String[] args) { PrintSize order173 = new PrintSize(Sizes.SMALL); order173.placeOrder(); } } আমাদের কোড রিটার্ন করে:
This coffee should be small.
প্রথমে, আমরা Sizes নামে একটি enum ডিক্লেয়ার করি। এই enum-এর তিনটি ভ্যালু হতে পারে: SMALL, REGULAR, অথবা LARGE। এরপর, আমরা PrintSize নামে একটি ক্লাস ডিক্লেয়ার করি। এই ক্লাস কাস্টমারের ড্রিংকের সাইজ এক্সেপ্ট করে এবং ড্রিংক সাইজ কনসোলে প্রিন্ট করে।
আমাদের মেইন প্রোগ্রামে, আমরা order173 নামে একটি অবজেক্ট ডিক্লেয়ার করি, যা PrintSize ক্লাস ব্যবহার করে। আমরা Java প্যারামিটার Sizes.SMALL আমাদের কোডের মাধ্যমে পাস করি। এটি আমাদের প্রোগ্রামকে বলে PrintSize ক্লাসে coffeeSize ভেরিয়েবলে SMALL ভ্যালু অ্যাসাইন করতে।
তারপর আমরা order173.placeOrder() ব্যবহার করি PrintSize ক্লাসে switch case স্টেটমেন্টের কোড এক্সিকিউট করতে। এটি "coffeeSize" ভেরিয়েবলের ভ্যালু তিনটি কেসের সাথে ইভ্যালুয়েট করে। কাস্টমার অর্ডার করা কফির সাইজের উপর নির্ভর করে কনসোলে একটি মেসেজ প্রিন্ট হয়।
আমরা স্পেসিফাই করেছি যে কাস্টমার একটি স্মল কফি অর্ডার করেছেন। আমাদের কোড কনসোলে, "This coffee should be small." প্রিন্ট করে।
আপনি যদি জাভা switch case স্টেটমেন্ট সম্পর্কে আরও জানতে চান, তবে আপনি আমাদের জাভা switch স্টেটমেন্ট টিউটোরিয়ালে সেটি পড়তে পারেন।
জাভা Enum মেথডস
জাভা enum ক্লাসে অনেক প্রিডিফাইনড মেথড থাকে যা enum ক্লাস ব্যবহার করা ভ্যালু রিট্রিভ এবং ম্যানিপুলেট করতে ব্যবহৃত হয়। নিচে আমরা পাঁচটি সবচেয়ে কমনলি ইউজড enum মেথড ব্রেক ডাউন করেছি।

"Career Karma আমার জীবনে এসেছিল তখন আমাকে সবচেয়ে বেশি দরকার ছিল এবং দ্রুত একটি বুটক্যাম্পের সাথে ম্যাচ করতে সাহায্য করল। দু মাস পর গ্র্যাজুয়েট করার পর, আমি আমার স্বপ্নের জব পেলাম যা আমার মূল্যবোধ এবং জীবনের লক্ষ্যের সাথে মিলে যেত!"
Venus, Software Engineer at Rockbot
Find Your Bootcamp Match
compareTo()
compareTo() enum-এ কনস্ট্যান্টগুলো লেক্সিকোগ্রাফিক্যালি কম্পেয়ার করে এবং তাদের অর্ডিনাল ভ্যালুর ডিফারেন্স রিটার্ন করে। compareTo() আমাদের উপরের উদাহরণ থেকে একটি enum ভ্যালু সাথে ব্যবহার করার একটি উদাহরণ:
int difference = Sizes.SMALL.compareTo(Sizes.LARGE); System.out.println(difference);
আমাদের কোড SMALL এবং LARGE স্ট্রিংয়ের ডিফারেন্স রিটার্ন করে তাদের অর্ডিনাল ভ্যালু বেসড। এই কেসে, আমাদের কোড রিটার্ন করে:
-2
toString()
toString() enum-এর নামকে একটি স্ট্রিং-এ কনভার্ট করে। LARGE enum ভ্যালুকে স্ট্রিং-এ কনভার্ট করতে toString() ব্যবহারের একটি উদাহরণ:
String large_string = LARGE.toString(); System.out.println(large_string);
আমাদের কোড রিটার্ন করে:
“LARGE”
name()
name() মেথড enum ক্লাসে একটি কনস্ট্যান্ট ডিফাইন করতে ব্যবহৃত নাম রিটার্ন করে। REGULAR কফি সাইজের ডিফাইন করা নাম রিটার্ন করতে name() মেথড ব্যবহারের একটি উদাহরণ:
String regular_name = name(REGULAR); System.out.println(regular_name);
আমাদের কোড রিটার্ন করে:
“REGULAR”
values()
values() মেথড একটি জাভা অ্যারে রিটার্ন করে যা enum-এ সব কনস্ট্যান্ট স্টোর করে। values() মেথড একশনে একটি উদাহরণ:
Sizes[] sizeList = Sizes.values();
valueOf()
valueOf() একটি স্ট্রিং এক্সেপ্ট করে এবং enum কনস্ট্যান্ট রিটার্ন করে, যার একই নাম আছে। তাই, আপনি যদি REGULAR, নাম ধারক enum কনস্ট্যান্ট রিট্রিভ করতে চান, তবে আপনি এই কোড ব্যবহার করে করতে পারেন:
String regular_constant = Sizes.valueOf("REGULAR"); System.out.println(regular_constant); আমাদের কোড রিটার্ন করে:
REGULAR
উপসংহার
একটি enum, enumeration-এর শর্ট ফর্ম, হলো একটি জাভা ডেটা টাইপ যার একটি ফিক্সড সেট অফ ভ্যালু থাকে।
Enums দরকারী যদি আপনি এমন ভেরিয়েবল সাথে কাজ করছেন যেগুলো শুধু একটি সিলেক্টেড রেঞ্জের ভ্যালুর একটা স্টোর করার ক্যাপেবল হওয়া উচিত।
এই টিউটোরিয়ালে যা পড়েছেন সেটি প্র্যাকটিস করার পর, আপনি জাভাতে enums ব্যবহারে এক্সপার্ট হবেন। জাভাতে কোডিং সম্পর্কে আরও জানতে, How to Code in Java-র আমাদের কমপ্লিট গাইড পড়ুন।