Enum के निर्माता स्थैतिक क्षेत्रों और विधियों तक क्यों नहीं पहुंच सकते हैं? यह पूरी तरह से एक वर्ग के साथ मान्य है, लेकिन एक एनम के साथ अनुमति नहीं है।
मैं जो करने की कोशिश कर रहा हूं वह मेरे स्थिर उदाहरणों को स्थिर मानचित्र में संग्रहीत करता है। इस उदाहरण कोड पर विचार करें जो अमूर्तता से देखने की अनुमति देता है:
public enum Day {
Sunday("Sun"), Monday("Mon"), Tuesday("Tue"), Wednesday("Wed"), Thursday("Thu"), Friday("Fri"), Saturday("Sat");
private final String abbreviation;
private static final Map<String, Day> ABBREV_MAP = new HashMap<String, Day>();
private Day(String abbreviation) {
this.abbreviation = abbreviation;
ABBREV_MAP.put(abbreviation, this); // Not valid
}
public String getAbbreviation() {
return abbreviation;
}
public static Day getByAbbreviation(String abbreviation) {
return ABBREV_MAP.get(abbreviation);
}
}
यह काम नहीं करेगा क्योंकि एनम अपने निर्माता में स्थिर संदर्भों की अनुमति नहीं देता है। हालाँकि यह सिर्फ एक वर्ग के रूप में लागू होने पर काम करता है:
public static final Day SUNDAY = new Day("Sunday", "Sun");
private Day(String name, String abbreviation) {
this.name = name;
this.abbreviation = abbreviation;
ABBREV_MAP.put(abbreviation, this); // Valid
}