Fields और Methods वाले Enums
Enums में व्यवहार जोड़ें
Fields और Methods वाले Enums, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Enum पूर्ण क्लास होते हैं
Java का enum स्थिरांकों की सूची से कहीं अधिक होता है। यह एक वास्तविक क्लास है, जिसके उदाहरण वे स्थिरांक होते हैं।
इसका अर्थ है कि किसी भी अन्य क्लास की तरह enum में फ़ील्ड, कंस्ट्रक्टर और विधियाँ हो सकती हैं।
public class Main {
enum Direction { NORTH, SOUTH, EAST, WEST }
public static void main(String[] args) {
Direction d = Direction.NORTH;
System.out.println(d + " is a " + d.getClass().getSuperclass().getSimpleName());
}
}एक फ़ील्ड जोड़ना
आप प्रत्येक स्थिरांक के साथ डेटा जोड़ सकते हैं। एक final फ़ील्ड और कंस्ट्रक्टर घोषित कीजिए, फिर प्रत्येक स्थिरांक के बाद कोष्ठकों में मान पास कीजिए।
public class Main {
enum Planet {
EARTH(9.81), MARS(3.71), JUPITER(24.79);
private final double gravity;
Planet(double gravity) { this.gravity = gravity; }
double gravity() { return gravity; }
}
public static void main(String[] args) {
System.out.println("Mars gravity: " + Planet.MARS.gravity());
}
}Enum कंस्ट्रक्टर निजी होता है
Enum कंस्ट्रक्टर स्वाभाविक रूप से private होते हैं। आप enum पर new नहीं चला सकते; JVM क्लास लोड होने पर स्थिरांक केवल एक बार बनाता है।
इससे उदाहरणों का एक निश्चित और सीमित समूह सुनिश्चित होता है।
public class Main {
enum Coin {
PENNY(1), NICKEL(5), DIME(10), QUARTER(25);
private final int cents;
Coin(int cents) { this.cents = cents; }
int cents() { return cents; }
}
public static void main(String[] args) {
int total = Coin.QUARTER.cents() + Coin.DIME.cents();
System.out.println("Total cents: " + total);
}
}अनेक फ़ील्ड
कोई स्थिरांक डेटा के कई हिस्से रख सकता है। यहाँ प्रत्येक ग्रह द्रव्यमान और त्रिज्या, दोनों संग्रहीत करता है।
public class Main {
enum Planet {
EARTH(5.976e24, 6.37814e6),
MARS(6.421e23, 3.3972e6);
private final double mass, radius;
Planet(double mass, double radius) { this.mass = mass; this.radius = radius; }
double surfaceGravity() {
final double G = 6.67300E-11;
return G * mass / (radius * radius);
}
}
public static void main(String[] args) {
System.out.printf("Earth g = %.2f%n", Planet.EARTH.surfaceGravity());
}
}इंस्टेंस विधियाँ
Enum की विधियाँ सामान्य इंस्टेंस विधियों की तरह स्थिरांक के अपने फ़ील्ड से परिणाम निकाल सकती हैं।
public class Main {
enum Size {
SMALL(8), MEDIUM(12), LARGE(16);
private final int ounces;
Size(int ounces) { this.ounces = ounces; }
int ounces() { return ounces; }
double liters() { return ounces * 0.0295735; }
}
public static void main(String[] args) {
System.out.printf("Large = %.2f L%n", Size.LARGE.liters());
}
}बिल्ट-इन नाम और क्रमांक
हर एनम को name() (सटीक पहचानकर्ता) और ordinal() (शून्य-आधारित स्थिति) मिलते हैं।
ordinal() पर निर्भर रहने के बजाय अपना डेटा संग्रहित करना बेहतर है, क्योंकि स्थिरांकों का क्रम बदलने पर यह टूट सकता है।
public class Main {
enum Day { MON, TUE, WED }
public static void main(String[] args) {
for (Day d : Day.values()) {
System.out.println(d.name() + " -> ordinal " + d.ordinal());
}
}
}values और valueOf
कंपाइलर दो स्थिर सहायक विधियाँ बनाता है:
values()सभी स्थिरांकों की एक सरणी लौटाता है।valueOf(String)नाम के आधार पर स्थिरांक खोजता है और न मिलने पर त्रुटि उत्पन्न करता है।
public class Main {
enum Status { ACTIVE, PAUSED, CLOSED }
public static void main(String[] args) {
System.out.println("count: " + Status.values().length);
Status s = Status.valueOf("PAUSED");
System.out.println("parsed: " + s);
}
}toString को ओवरराइड करना
कोड में स्थिरांक का नाम बनाए रखते हुए अधिक सहज लेबल देने के लिए आप toString() को ओवरराइड कर सकते हैं।
public class Main {
enum Priority {
LOW, MEDIUM, HIGH;
@Override public String toString() {
return name().charAt(0) + name().substring(1).toLowerCase();
}
}
public static void main(String[] args) {
for (Priority p : Priority.values()) System.out.println(p);
}
}switch में एनम
एनम, switch के साथ आसानी से काम करते हैं। आधुनिक switch एक्सप्रेशन के साथ आपको सभी मामलों की जाँच मिलती है और कोई fall-through नहीं होता।
public class Main {
enum Traffic { RED, YELLOW, GREEN }
static String action(Traffic t) {
return switch (t) {
case RED -> "Stop";
case YELLOW -> "Slow down";
case GREEN -> "Go";
};
}
public static void main(String[] args) {
System.out.println(action(Traffic.GREEN));
}
}स्थिर लुकअप मैप
एक सामान्य पैटर्न यह है कि किसी फ़ील्ड से स्थिरांक तक जाने वाला स्थिर मैप बनाया जाए और उसे स्थिर प्रारंभकर्ता में एक बार बनाया जाए।
import java.util.HashMap;
import java.util.Map;
public class Main {
enum Op {
PLUS("+"), MINUS("-");
private final String symbol;
Op(String symbol) { this.symbol = symbol; }
private static final Map<String, Op> BY_SYMBOL = new HashMap<>();
static { for (Op o : values()) BY_SYMBOL.put(o.symbol, o); }
static Op fromSymbol(String s) { return BY_SYMBOL.get(s); }
}
public static void main(String[] args) {
System.out.println(Op.fromSymbol("-"));
}
}एनम इंटरफ़ेस लागू करते हैं
एक एनम किसी इंटरफ़ेस को लागू कर सकता है, जिससे स्थिरांक सामान्य प्रयोजन वाले कोड में जुड़ सकते हैं।
public class Main {
interface Describable { String describe(); }
enum Animal implements Describable {
DOG, CAT;
public String describe() { return "A " + name().toLowerCase(); }
}
public static void main(String[] args) {
Describable d = Animal.DOG;
System.out.println(d.describe());
}
}त्वरित जाँच
एनम फ़ील्ड के बारे में अपनी समझ जाँचें।
पुनरावलोकन
आपने सीखा कि एनम पूर्ण क्लास होते हैं:
- स्थिरांक निजी निर्माता के माध्यम से निर्धारित फ़ील्ड रख सकते हैं।
- एनम में इंस्टेंस मेथड हो सकते हैं और वे
toString()को ओवरराइड कर सकते हैं। values()औरvalueOf()आपके लिए बनाए जाते हैं।- एनम इंटरफ़ेस लागू कर सकते हैं और
ordinal()के बजाय फ़ील्ड को प्राथमिकता देनी चाहिए।
अगला विषय है abstract मेथड के साथ प्रत्येक स्थिरांक का अलग व्यवहार।
public class Main {
enum Greeting { HELLO; String text() { return "Hi"; } }
public static void main(String[] args) {
System.out.println("Enum fields recap: " + Greeting.HELLO.text());
}
}एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 104
- पाठ
- 374
अक्सर पूछे जाने वाले प्रश्न
क्या “Fields और Methods वाले Enums” पाठ निःशुल्क है?
हाँ—“Fields और Methods वाले Enums” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Fields और Methods वाले Enums” में मैं क्या सीखूँगा?
Enums में व्यवहार जोड़ें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“Fields और Methods वाले Enums” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Fields और Methods वाले Enums
- Enums में Abstract Methods
- EnumSet
- EnumMap