# Enum — कोर जावा

Source: https://www.geekswithgeeks.com/hi/core-java/java-enums

> स्थिरांकों के निश्चित सेट को Java enum के रूप में मॉडल करें जिसमें फ़ील्ड, कंस्ट्रक्टर व मेथड हों और जो बिना मैजिक नंबर के switch करे।

## स्थिरांक से अधिक

`enum` इंस्टेंस का निश्चित सेट है। इसमें फ़ील्ड, कंस्ट्रक्टर, मेथड हो सकते हैं और `switch` में साफ़ काम करता है।

```java
enum Planet {
    EARTH(9.81), MARS(3.71);
    private final double gravity;
    Planet(double g) { this.gravity = g; }
    double weight(double mass) { return mass * gravity; }
}

Planet.MARS.weight(70);   // 259.7
```

## प्रति-स्थिरांक बॉडी

हर स्थिरांक किसी एब्स्ट्रैक्ट मेथड को अपनी बॉडी से ओवरराइड कर सकता है — व्यवहार से भरे `switch` का साफ़ विकल्प।

```java
enum Op {
    ADD { public int apply(int a, int b) { return a + b; } },
    MUL { public int apply(int a, int b) { return a * b; } };

    public abstract int apply(int a, int b);
}

Op.ADD.apply(2, 3);   // 5
Op.MUL.apply(2, 3);   // 6
```

## values(), valueOf(), ordinal()

हर enum को `values()` (घोषणा क्रम में सभी स्थिरांकों का array), `valueOf("NAME")` (नाम से पार्स करे, अनजान पर त्रुटि), और `ordinal()` (0 से शुरू स्थिति) मिलते हैं। `ordinal()` को सेव न करें — क्रम बदलने पर चुपचाप टूट जाता है; इसकी जगह `name()` रखें।
