एक एनम टाइप एक विशेष डेटा टाइप है जो किसी वेरिएबल को पहले से तय स्थिरांकों में से एक होने देता है।
वेरिएबल की वैल्यू उसके लिए पहले से तय वैल्यू में से एक के बराबर होनी चाहिए।
आम उदाहरणों में दिशाएँ (NORTH, SOUTH, EAST, और WEST वैल्यू) और सप्ताह के दिन शामिल हैं।
चूँकि ये स्थिरांक हैं, एनम टाइप के फील्डों के नाम बड़े अक्षरों में लिखे जाते हैं।
Java प्रोग्रामिंग भाषा में, आप enum कीवर्ड का उपयोग करके एनम टाइप बनाते हैं।
उदाहरण के लिए, सप्ताह के दिनों वाला एनम टाइप इस तरह बनाएँगे:
public enum DayOfWeek {
SUNDAY,
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY
}
जब भी आपको स्थिरांकों के एक तय समूह को दर्शाना हो, तब आपको एनम टाइप का उपयोग करना चाहिए। इसमें हमारे सौरमंडल के ग्रहों जैसे प्राकृतिक एनम टाइप और ऐसे डेटा सेट शामिल हैं जिनमें आप सभी संभावित वैल्यू कंपाइल समय पर जानते हैं, जैसे मेन्यू के विकल्प, कमांड लाइन फ्लैग, वगैरह।
यहाँ कुछ कोड है जो दिखाता है कि ऊपर बनाए गए DayOfWeek एनम का उपयोग कैसे करें:
public class Shop {
public String getOpeningHours(DayOfWeek dayOfWeek) {
switch (dayOfWeek) {
case MONDAY:
case TUESDAY:
case WEDNESDAY:
case THURSDAY:
case FRIDAY:
return "9am - 5pm";
case SATURDAY:
return "10am - 4pm"
case SUNDAY:
return "Closed.";
}
}
}
var shop = new Shop();
shop.getOpeningHours(DayOfWeek.WEDNESDAY);
// => "9am - 5pm"
Java प्रोग्रामिंग भाषा के एनम टाइप अन्य भाषाओं के एनम टाइप से कहीं अधिक शक्तिशाली होते हैं।
enum घोषणा एक क्लास बनाती है (जिसे एनम टाइप कहा जाता है)।
एनम क्लास के अंदर मेथड और अन्य फील्ड हो सकते हैं:
public enum Rating {
GREAT(5),
GOOD(4),
OK(3),
BAD(2),
TERRIBLE(1);
private final int numberOfStars;
Rating(int numberOfStars) {
this.numberOfStars = numberOfStars;
}
public int getNumberOfStars() {
return this.numberOfStars;
}
}
Rating एनम टाइप के एक सदस्य पर getNumberOfStars मेथड कॉल करने पर:
Rating.GOOD.getNumberOfStars();
// => 4
जब कंपाइलर एक एनम बनाता है, तो वह अपने आप कुछ विशेष मेथड जोड़ देता है।
उदाहरण के लिए, इनमें एक स्टैटिक values मेथड होता है जो एनम की सभी वैल्यू वाले ऐरे को उस क्रम में लौटाता है जिस क्रम में वे घोषित की गई हैं:
for (DayOfWeek dayOfWeek : DayOfWeek.values()) {
System.out.println(dayOfWeek.toString());
}
ऊपर दिया गया स्निपेट यह प्रिंट करेगा:
SUNDAY
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
कंपाइलर एक स्टैटिक valueOf मेथड भी जोड़ता है जो नाम के आधार पर एनम का एक सदस्य लौटाता है:
DayOfWeek.valueOf("SUNDAY");
// => DayOfWeek.SUNDAY