मुझे पता है कि एक enumजावा में enum क्या अस्थिर बनाता है?
enum Year
{
First, Second, Third, Fourth;
}
final class Year extends Enum<Year>
{
public static final Year First = new Year();
public static final Year Second = new Year();
public static final Year Third = new Year();
public static final Year Fourth = new Year();
}
में परिवर्तित हो जाती जब मैं enum (नहीं वर्ग) मैं समय त्रुटि संकलन मिल का दृष्टांत करने की कोशिश की:
error: enum types may not be instantiated
Year y = new Year();
के अनुसार मेरा ज्ञान एक निजी कन्स्ट्रक्टर एक कक्षा को गैर तत्काल बनाता है। और मैंने सोचा कि संकलक एक निजी कन्स्ट्रक्टर प्रदान कर रहा है। लेकिन फिर मुझे उलझन में आया जब हमने देखा कि हम डिफॉल्ट संशोधक के साथ एनम के लिए एक कन्स्ट्रक्टर को परिभाषित कर सकते हैं और अभी भी टाइप एनम का ऑब्जेक्ट नहीं बना सकते हैं।
enum Year
{
First, Second, Third, Fourth;
Year()
{
}
}
class Example
{
public static void main(String[] args)
{
Year y = new Year();
}
}
मेरा संदेह है, अगर यह रचनाकारों के बारे में नहीं है तो जावा में enum को तत्काल क्यों बनाया जाता है?
"क्योंकि भाषा ऐसा कहती है।" वास्तव में, उससे कोई बेहतर जवाब नहीं है। आपकी 'enum' घोषणा चार ऑब्जेक्ट्स को _pre-created_ होने का कारण बनती है, और कक्षा के प्रत्येक ऑब्जेक्ट को उन चार में से एक होना चाहिए। तो किसी और को तुरंत चालू करने का कोई कारण नहीं है। – ajb
साइड नोट: एक 'एनम वर्ष' को 'अंतिम श्रेणी वर्ष' में संकलित किया गया है, जो एनम 'बढ़ाता है। –
Seelenvirtuose