কেন এনামের কনস্ট্রাক্টর স্থির ক্ষেত্র এবং পদ্ধতি অ্যাক্সেস করতে পারে না? এটি একটি শ্রেণীর সাথে পুরোপুরি বৈধ, তবে এনামের সাথে অনুমোদিত নয়।
আমি যা করার চেষ্টা করছি তা হল আমার এনাম উদাহরণগুলি স্থির মানচিত্রে সংরক্ষণ করা। এই উদাহরণ কোডটি বিবেচনা করুন যা সংক্ষিপ্তসার দ্বারা অনুসন্ধানের অনুমতি দেয়:
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
}