Fields और Methods वाले Enums
व्यवहार को समाहित करने के लिए enums में fields, constructors और methods जोड़ें।
Fields और Methods वाले Enums, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
फ़ील्ड और विधियों वाले एनम
एनम स्थिरांक अपने साथ डेटा रख सकते हैं। फ़ील्ड घोषित करके और एक निर्माता जोड़कर ऐसा करें। निर्माता स्वचालित रूप से निजी होता है।
एनम में फ़ील्ड घोषित करना
वर्ग लोड होने पर प्रत्येक एनम स्थिरांक निर्माता को कॉल करता है। फ़ील्ड के मान एक बार निर्धारित होते हैं और (जब final घोषित किए जाएँ) अपरिवर्तनीय रहते हैं।
enum Planet {
MERCURY(3.303e+23, 2.4397e6),
VENUS (4.869e+24, 6.0518e6),
EARTH (5.976e+24, 6.37814e6),
MARS (6.421e+23, 3.3972e6);
private final double mass; // kilograms
private final double radius; // meters
Planet(double mass, double radius) {
this.mass = mass;
this.radius = radius;
}
public double mass() { return mass; }
public double radius() { return radius; }
}एनम में विधियाँ जोड़ना
एनम प्रकारों में वे सभी विधियाँ शामिल की जा सकती हैं जिन्हें आप किसी वर्ग में रखते, जिनमें परिकलित गुण भी शामिल हैं।
enum Planet {
EARTH(5.976e+24, 6.37814e6);
// ... constructor and fields ...
static final double G = 6.67300E-11;
public double surfaceGravity() {
return G * mass / (radius * radius);
}
public double surfaceWeight(double otherMass) {
return otherMass * surfaceGravity();
}
}
double earthWeight = 75.0;
double mass = earthWeight / Planet.EARTH.surfaceGravity();
for (Planet p : Planet.values())
System.out.printf("Weight on %s: %.2f%n", p, p.surfaceWeight(mass));एनम स्थिरांकों पर abstract विधियाँ
प्रत्येक स्थिरांक एनम के मुख्य भाग में घोषित abstract विधि का अपना कार्यान्वयन दे सकता है।
enum Operation {
PLUS { public double apply(double x, double y) { return x + y; } },
MINUS { public double apply(double x, double y) { return x - y; } },
TIMES { public double apply(double x, double y) { return x * y; } },
DIVIDE{ public double apply(double x, double y) { return x / y; } };
public abstract double apply(double x, double y);
}
System.out.println(Operation.PLUS.apply(3, 4)); // 7.0
System.out.println(Operation.TIMES.apply(3, 4)); // 12.0String-लेबल वाले एनम
एक सामान्य पैटर्न: प्रत्येक स्थिरांक को मानव-पठनीय label दें और उसे एक फ़ील्ड में संग्रहीत करें।
enum UserRole {
GUEST("Guest User"),
MEMBER("Registered Member"),
ADMIN("Administrator"),
SUPERADMIN("Super Administrator");
private final String label;
UserRole(String label) { this.label = label; }
public String label() { return label; }
public static UserRole fromLabel(String lbl) {
for (UserRole r : values())
if (r.label.equalsIgnoreCase(lbl)) return r;
throw new IllegalArgumentException(lbl);
}
}
System.out.println(UserRole.ADMIN.label()); // Administratorकई फ़ील्ड वाला एनम
एनम में आवश्यकता के अनुसार कितने भी फ़ील्ड हो सकते हैं। यहाँ एक मुद्रा एनम ISO कोड और प्रतीक, दोनों संग्रहीत करता है।
enum Currency {
USD("US Dollar", "$"),
EUR("Euro", "\u20ac"),
GBP("British Pound", "\u00a3"),
JPY("Japanese Yen", "\u00a5");
public final String name;
public final String symbol;
Currency(String name, String symbol) {
this.name = name;
this.symbol = symbol;
}
public String format(double amount) {
return String.format("%s%.2f", symbol, amount);
}
}
System.out.println(Currency.EUR.format(99.99)); // \u20ac99.99toString() को अध्यारोपित करना
स्थिरांक के नाम के बजाय मनचाहा स्ट्रिंग निरूपण लौटाने के लिए एनम में toString() को अध्यारोपित करें।
enum HttpMethod {
GET, POST, PUT, PATCH, DELETE;
@Override
public String toString() {
return name().toUpperCase();
}
public boolean hasBody() {
return this == POST || this == PUT || this == PATCH;
}
}
HttpMethod m = HttpMethod.POST;
System.out.println(m); // POST
System.out.println(m.hasBody()); // true
System.out.println(HttpMethod.GET.hasBody()); // falseमान्यकरण वाले एनम
अमान्य अवस्थाओं को रोकने के लिए एनम निर्माता अपने तर्कों का मान्यकरण कर सकते हैं।
enum DiscountTier {
BRONZE(5), SILVER(10), GOLD(20), PLATINUM(30);
public final int percentage;
DiscountTier(int percentage) {
if (percentage < 0 || percentage > 100)
throw new IllegalArgumentException("Invalid: " + percentage);
this.percentage = percentage;
}
public double apply(double price) {
return price * (1 - percentage / 100.0);
}
}
System.out.println(DiscountTier.GOLD.apply(100.0)); // 80.0एनम सिंगलटन प्रतिरूप
Java में सिंगलटन लागू करने का सबसे सुरक्षित तरीका एक-स्थिरांक वाला एनम है — यह क्रमबद्धीकरण-सुरक्षित और डिफ़ॉल्ट रूप से थ्रेड-सुरक्षित होता है।
enum AppConfig {
INSTANCE;
private String dbUrl = "jdbc:postgresql://localhost/mydb";
private int maxConnections = 20;
public String getDbUrl() { return dbUrl; }
public int getMaxConnections() { return maxConnections; }
public void setDbUrl(String url) { this.dbUrl = url; }
}
// Access the singleton
AppConfig config = AppConfig.INSTANCE;
System.out.println(config.getDbUrl());डोमेन मॉडल में एनम
प्रकार-सुरक्षित श्रेणियों को निरूपित करने के लिए डोमेन मॉडल में एनम का व्यापक रूप से उपयोग किया जाता है: ऑर्डर स्थिति, भुगतान विधि, सूचना प्रकार आदि।
enum PaymentMethod {
CREDIT_CARD("Credit Card", true),
DEBIT_CARD("Debit Card", true),
PAYPAL("PayPal", false),
CRYPTO("Cryptocurrency", false),
BANK_TRANSFER("Bank Transfer", false);
public final String displayName;
public final boolean instantCharge;
PaymentMethod(String displayName, boolean instantCharge) {
this.displayName = displayName;
this.instantCharge = instantCharge;
}
}एनम फ़ील्ड बनाम परिकलित मान
फ़ील्ड स्थिर डेटा संग्रहीत करते हैं; विधियाँ गतिशील मानों की गणना करती हैं। स्थिर डेटा के लिए फ़ील्ड और व्युत्पन्न मानों के लिए विधियों का उपयोग करें।
enum DayType {
MONDAY(false), TUESDAY(false), WEDNESDAY(false),
THURSDAY(false), FRIDAY(false),
SATURDAY(true), SUNDAY(true);
private final boolean weekend;
DayType(boolean weekend) { this.weekend = weekend; }
public boolean isWeekend() { return weekend; }
public boolean isWeekday() { return !weekend; }
public static long weekdayCount() {
return java.util.Arrays.stream(values())
.filter(DayType::isWeekday).count();
}
}
System.out.println(DayType.weekdayCount()); // 5त्वरित जाँच
एनम निर्माता किसी सामान्य वर्ग के निर्माता से किस तरह अलग होता है?
पुनरावलोकन: फ़ील्ड और विधियों वाले एनम
मुख्य बातें:
- प्रत्येक स्थिरांक के साथ डेटा रखने के लिए फ़ील्ड और निर्माता जोड़ें
- एनम निर्माता स्वाभाविक रूप से निजी होते हैं
- abstract विधियाँ प्रत्येक स्थिरांक को अपना कार्यान्वयन देने देती हैं
- मनचाहे प्रदर्शन नामों के लिए toString() को अध्यारोपित करें
- एक-स्थिरांक वाले एनम सबसे अच्छा सिंगलटन कार्यान्वयन हैं
- एनम प्रकार-सुरक्षित श्रेणियों के रूप में डोमेन मॉडल में स्वाभाविक रूप से समाहित होते हैं
एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 104
- पाठ
- 374
अक्सर पूछे जाने वाले प्रश्न
क्या “Fields और Methods वाले Enums” पाठ निःशुल्क है?
हाँ—“Fields और Methods वाले Enums” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Fields और Methods वाले Enums” में मैं क्या सीखूँगा?
व्यवहार को समाहित करने के लिए enums में fields, constructors और methods जोड़ें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“Fields और Methods वाले Enums” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Enums को परिभाषित करना और उपयोग करना
- Fields और Methods वाले Enums
- Enums के साथ Switch Expressions
- EnumSet और EnumMap