تعریف یک Enum دارای سازنده و ذخیره مقادیر پیش فرض در جاوا :
یک Enum در جاوا یک نوع داده است که مجموعه ای از ثابت های مشخص را تعریف می کند. Enum ها در جاوا از نسخه 5 به بعد معرفی شده اند و یک روش کمی متفاوت برای تعریف ثابت ها در برنامه ها ارائه می دهند.
یک Enum در جاوا می تواند شامل مجموعه ای از ثابت ها باشد که هر کدام دارای یک مقدار منحصر به فرد هستند. مقادیر Enum در جاوا بصورت پیش فرض ثابت های public static final هستند و نمی توانند تغییر کنند. همچنین Enum ها همیشه به صورت تکرار نشده تعریف می شوند، یعنی هر مقدار Enum یکتا است.
یک Enum در جاوا می تواند دارای سازنده باشد که مقادیر پیش فرض را برای ثابت ها تعیین می کند. سازنده Enum معمولا به صورت private تعریف می شود تا از ایجاد نمونه های جدید از Enum جلوگیری شود. به علاوه، می توان به هر Enum متدهای دیگری نیز اضافه کرد.
به عنوان مثال، فرض کنید می خواهیم یک Enum بنام DaysOfWeek تعریف کنیم که روزهای هفته را نشان دهد. می توانیم این Enum را به صورت زیر تعریف کنیم:
“`java
public enum DaysOfWeek {
SUNDAY(“Sunday”),
MONDAY(“Monday”),
TUESDAY(“Tuesday”),
WEDNESDAY(“Wednesday”),
THURSDAY(“Thursday”),
FRIDAY(“Friday”),
SATURDAY(“Saturday”);
private String name;
private DaysOfWeek(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
“`
در این مثال، هر روز از هفته به صورت یک Enum تعریف شده است. هر Enum دارای یک مقدار String به نام name است که با استفاده از متد getName قابل دسترسی است. همچنین هر Enum دارای یک سازنده private است که مقدار پیش فرض را برای هر روز هفته تنظیم می کند.
از این Enum می توان به صورت زیر استفاده کرد:
“`java
DaysOfWeek today = DaysOfWeek.MONDAY;
System.out.println(today.getName()); // prints “Monday”
“`
در این مثال، مقدار today به Enum روز دوم هفته یعنی Monday تنظیم شده است و با استفاده از متد getName مقدار “Monday” چاپ می شود.
با استفاده از Enum ها در جاوا می توانیم کد هایی را که قابلیت خوانایی و قابلیت نگهداری بالایی دارند، تعریف کنیم. برای مثال در مثال بالا، به جای استفاده از مقادیر عددی برای نشان دادن روزهای هفته، از Enum استفاده شده است که کدهایی را قابل خواندن تر می کند و اشتباهات ناشی از استفاده اشتباه از مقادیر عددی را کاهش می دهد.