पाठ 31 / 38
Enum
स्थिरांकों के निश्चित सेट को Java enum के रूप में मॉडल करें जिसमें फ़ील्ड, कंस्ट्रक्टर व मेथड हों और जो बिना मैजिक नंबर के switch करे।
स्थिरांक से अधिक
enum इंस्टेंस का निश्चित सेट है। इसमें फ़ील्ड, कंस्ट्रक्टर, मेथड हो सकते हैं और switch में साफ़ काम करता है।
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 का साफ़ विकल्प।
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); // 6values(), valueOf(), ordinal()
हर enum को values() (घोषणा क्रम में सभी स्थिरांकों का array), valueOf("NAME") (नाम से पार्स करे, अनजान पर त्रुटि), और ordinal() (0 से शुरू स्थिति) मिलते हैं। ordinal() को सेव न करें — क्रम बदलने पर चुपचाप टूट जाता है; इसकी जगह name() रखें।