JavaRush /Java Blog /Random-KO /์ž๋ฐ”์˜ ์—ด๊ฑฐํ˜•. ์‹ค์ œ ์‚ฌ๋ก€. ์ƒ์„ฑ์ž ๋ฐ ๋ฉ”์„œ๋“œ ์ถ”๊ฐ€

์ž๋ฐ”์˜ ์—ด๊ฑฐํ˜•. ์‹ค์ œ ์‚ฌ๋ก€. ์ƒ์„ฑ์ž ๋ฐ ๋ฉ”์„œ๋“œ ์ถ”๊ฐ€

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
์•ˆ๋…•ํ•˜์„ธ์š”! ์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” Java์˜ ํŠน๋ณ„ํ•œ ๋ฐ์ดํ„ฐ ์œ ํ˜• Enum(์—ด๊ฑฐ์˜ ์•ฝ์–ด)์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์˜ ํŠน์ง•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํ”„๋กœ๊ทธ๋žจ์—์„œ ์›”์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์—ด๊ฑฐํ˜•.  ์‹ค์ œ ์‚ฌ๋ก€.  ์ƒ์„ฑ์ž ๋ฐ ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€ - 1๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ ๊ฒƒ ๊ฐ™๋‚˜์š”? ๊ฐ ๋‹ฌ์— ์–ด๋–ค ์†์„ฑ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋จผ์ € ๋‹ฌ์˜ ์ด๋ฆ„๊ณผ ๊ทธ ๋‹ฌ์˜ ์ผ์ˆ˜๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.
public class Month {

   private String name;
   private int daysCount;

   public Month(String name, int daysCount) {
       this.name = name;
       this.daysCount = daysCount;
   }

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }

   public int getDaysCount() {
       return daysCount;
   }

   public void setDaysCount(int daysCount) {
       this.daysCount = daysCount;
   }

   @Override
   public String toString() {
       return "Month{" +
               "name='" + name + '\'' +
               ", daysCount=" + daysCount +
               '}';
   }
}
ํ’€์„ธํŠธ ๋ถ€ํƒ๋“œ๋ ค์š”! ์šฐ๋ฆฌ๋Š” ํด๋ž˜์Šค Month, ํ•„์ˆ˜ ํ•„๋“œ, getters-setters๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค toString(). equals()์™„์ „ํ•œ ํ–‰๋ณต์„ ์œ„ํ•ด ์ถ”๊ฐ€ํ•  ํ•„์š” ๊ฐ€ ์—†๋‹ค๋ฉด hashCode():) ๊ทธ๋Ÿฌ๋‚˜ ๊ฐœ๋…์ ์ธ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์–ตํ•˜์‹œ๊ฒ ์ง€๋งŒ OOP์˜ ์ฃผ์š” ์žฅ์  ์ค‘ ํ•˜๋‚˜๋Š” ์‹ค์ œ ์—”ํ„ฐํ‹ฐ๋ฅผ ์‰ฝ๊ฒŒ ๋ชจ๋ธ๋งํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜์ž, ์ž๋™์ฐจ, ํ–‰์„ฑ - ์ผ์ƒ์ƒํ™œ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋Ÿฌํ•œ ๋ชจ๋“  ๊ฐœ๋…์€ ์ถ”์ƒํ™”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‰ฝ๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ํ˜„์‹ค ์„ธ๊ณ„์˜ ์ผ๋ถ€ ์—”ํ„ฐํ‹ฐ๊ฐ€ ์˜๋ฏธ ๋ฒ”์œ„๊ฐ€ ์—„๊ฒฉํžˆ ์ œํ•œ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 1๋…„์—๋Š” 4๊ณ„์ ˆ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค. ์Œ์•…์—๋Š” 7๊ฐœ์˜ ์Œํ‘œ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ฌ๋ ฅ์—๋Š” 12๊ฐœ์›”๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. Ocean์—๋Š” 11๋ช…์˜ ์นœ๊ตฌ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค(๋…ผ์Ÿ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ์ง€๋งŒ :)). ์ฆ‰, ์ผ๋ฐ˜ Java ํด๋ž˜์Šค๋Š” ์ด๋Ÿฌํ•œ ์—”ํ„ฐํ‹ฐ๋ฅผ ๋ชจ๋ธ๋งํ•˜๊ณ  ์ž์—ฐ์Šค๋Ÿฌ์šด ์ œ์•ฝ ์กฐ๊ฑด์„ ์กด์ค‘ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์ˆ˜์—…์—๋Š” Monthํ•„์š”ํ•œ ๋ชจ๋“  ๋ถ„์•ผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋ˆ„๊ตฌ๋„ ๊ทธ๊ฐ€ ์™„์ „ํžˆ ์ด์ƒํ•œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋ง‰์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
public class Main {

   Month month1 = new Month("lolkek", 322);
   Month month2 = new Month("yahoooooooooooo", 12345);

}
ํ”„๋กœ๊ทธ๋žจ์— ์ด๋Ÿฐ ๋‚ด์šฉ์ด ๋‚˜์˜ค๋ฉด ๋ฒ”์ธ ์ฐพ๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š๊ฒ ์ฃ ! ํ•œํŽธ์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“  ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ํด๋ž˜์Šค๊ฐ€ Month"์—ฐ๋„์˜ ๋‹ฌ"์„ ์˜๋ฏธํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๊ณ  ๊ทธ๋Ÿฐ ๋ง๋„ ์•ˆ๋˜๋Š” ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์•˜์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ๊ทธ๋Š” ํด๋ž˜์Šค ๋””์ž์ด๋„ˆ๊ฐ€ ๊ทธ์—๊ฒŒ ์ œ๊ณตํ•œ ๊ธฐํšŒ๋ฅผ ํ™œ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„๊ณผ ์ผ์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‚˜์š”? ๊ทธ๋Š” ๊ทธ๊ฒƒ์„ ์ž„๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? Java 1.5 ์–ธ์–ด ๋ฒ„์ „์ด ์ถœ์‹œ๋˜๊ธฐ ์ „์— ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์†”์งํžˆ ๋งํ•ด์„œ ์ด ๋ฒ„์ „์—์„œ ๋ฒ—์–ด๋‚˜์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹œ ๊ทธ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์„ฑ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
public class Month {

   private String name;
   private int daysCount;

   private Month(String name, int daysCount) {
       this.name = name;
       this.daysCount = daysCount;
   }

   public static Month JANUARY = new Month("ะฏะฝะฒะฐั€ัŒ", 31);
   public static Month FEBRUARY = new Month("ะคะตะฒั€ะฐะปัŒ", 28);
   public static Month MARCH = new Month("ะœะฐั€ั‚", 31);

   @Override
   public String toString() {
       return "Month{" +
               "name='" + name + '\'' +
               ", daysCount=" + daysCount +
               '}';
   }
}
์—ฌ๊ธฐ์„œ๋Š” ์˜ˆ์ œ๋ฅผ ๋” ์งง๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ์›” ์ˆ˜๋ฅผ 12๊ฐœ์›”์ด ์•„๋‹Œ 3๊ฐœ์›”๋กœ ๋‹จ์ˆœํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ค๊ณ„๋กœ ์ธํ•ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ๋œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์˜ต์…˜์€ ๊ฐœ์ธ ์ƒ์„ฑ์ž์— ์˜ํ•ด ์ œํ•œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
private Month(String name, int daysCount) {
       this.name = name;
       this.daysCount = daysCount;
   }
ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๋‹จ์ˆœํžˆ Month. ๊ทธ๋“ค์€ ํด๋ž˜์Šค ๊ฐœ๋ฐœ์ž๊ฐ€ ์ œ๊ณตํ•œ ์ตœ์ข… ์ •์  ๊ฐœ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์˜€์Šต๋‹ˆ๋‹ค:
public class Main {

   public static void main(String[] args) {

       Month january = Month.JANUARY;
       System.out.println(january);
   }

}
๊ทธ๋Ÿฌ๋‚˜ Java ๊ฐœ๋ฐœ์ž๋Š” ๊ธฐ์กด ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์–ธ์–ด์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†”๋ฃจ์…˜์„ ์ƒ๊ฐํ•ด ๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ํ›Œ๋ฅญํ•˜์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•ด ๋ณด์ด์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค! ์ดˆ๋ณด์ž๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ™•์‹คํ•œ ์†”๋ฃจ์…˜์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Java์—์„œ .๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค Enum. ๊ธฐ๋ณธ์ ์œผ๋กœ Enum์ œํ•œ๋œ ๊ฐ’ ๊ฐœ์ฒด ์ง‘ํ•ฉ์„ ์ œ๊ณตํ•˜๋Š” Java ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ๊ทธ ๋ชจ์Šต์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
public enum Month {

   JANUARY,
   FEBRUARY,
   MARCH
}
์ •์˜์—์„œ๋Š” Enum์ด๊ฒƒ์ด Java ํด๋ž˜์Šค๋ผ๊ณ  ํ‘œ์‹œํ–ˆ์ง€๋งŒ ์ด๊ฒƒ์ด ์‹ค์ œ๋กœ ์‚ฌ์‹ค์ž…๋‹ˆ๊นŒ? ์˜ˆ, ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. enum Month์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ์ƒ์†ํ•ด ๋ณด์„ธ์š” .
public abstract class AbstractMonth {
}

//ะพัˆะธะฑะบะฐ! No extends clause allowed to enum
public enum Month extends AbstractMonth {

   JANUARY,
   FEBRUARY,
   MARCH
}
์™œ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ? ํ”„๋กœ๊ทธ๋žจ์— ์“ธ ๋•Œ:
public enum Month
์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ด ๋ช…๋ น์„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
public Class Month extends Enum
์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋“ฏ์ด Java์—์„œ๋Š” ๋‹ค์ค‘ ์ƒ์†์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ AbstractMonth์šฐ๋ฆฌ๋Š” ์ƒ์†๋ฐ›์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ์ƒˆ๋กœ์šด ๋””์ž์ธ์€ ์–ด๋–ป๊ฒŒ Enum์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‚˜์š”? ๊ทธ๋ฆฌ๊ณ  ํ•„๋“œ๊ฐ€ ์žˆ๋Š” ๊ธฐ์กด ๋””์ž์ธ๊ณผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ๊ฐ€์š” static final? ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด์ „ ๋””์ž์ธ์—์„œ๋Š” -expressions์— ์ž์ฒด ๊ฐ’ ์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค switch. ์ด๋ฒˆ ๋‹ฌ์— ์–ด๋–ค ๊ณตํœด์ผ์„ ๊ธฐ๋…ํ•˜๋Š”์ง€ ์ƒ๊ธฐ์‹œ์ผœ์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
public class HolidayReminder {

   public void printHolidays(Month month) {

       switch (month) {

           //error!
           case JANUARY:
       }
   }
}
์—ฌ๊ธฐ์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Java 1.5๊ฐ€ ๋“ฑ์žฅํ•œ ์ดํ›„์—๋Š” enum๋ชจ๋“  ๊ฒƒ์ด ํ›จ์”ฌ ๋‹จ์ˆœํ•ด์กŒ์Šต๋‹ˆ๋‹ค.
public enum Month {

   JANUARY,
   FEBRUARY,
   MARCH
}

public class HolidayReminder {

   public void printHolidays(Month month) {

       switch (month) {

           case JANUARY:
               System.out.println("7 ัะฝะฒะฐั€ั ะฑัƒะดะตั‚ ะ ะพะถะดะตัั‚ะฒะพ!");
               break;
           case FEBRUARY:
               System.out.println("ะ’ ั„ะตะฒั€ะฐะปะต ะฟั€ะฐะทะดะฝัƒะตั‚ัั ะ”ะตะฝัŒ ะ—ะฐั‰ะธั‚ะฝะธะบะฐ ะžั‚ะตั‡ะตัั‚ะฒะฐ - 23 ั„ะตะฒั€ะฐะปั!");
               break;
           case MARCH:
               System.out.println("ะ’ ะผะฐั€ั‚ะต ะพั‚ะผะตั‡ะฐะตั‚ัั ะ’ัะตะผะธั€ะฝั‹ะน ะ–ะตะฝัะบะธะน ะ”ะตะฝัŒ - 8 ะผะฐั€ั‚ะฐ!");
               break;
       }
   }
}



public class Main {

   public static void main(String[] args) {

       HolidayReminder reminder = new HolidayReminder();
       reminder.printHolidays(Month.JANUARY);

   }

}
์ฝ˜์†” ์ถœ๋ ฅ:

7 ัะฝะฒะฐั€ั ะฑัƒะดะตั‚ ะ ะพะถะดะตัั‚ะฒะพ!
์ฐธ๊ณ : ๊ฐ์ฒด์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋Š” EnumJava 1.5 ์ด์ „๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ •์ ์œผ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์›”์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค Month. Enum์—ด๊ฑฐํ˜•์œผ๋กœ ์ž‘์—…ํ•  ๋•Œ ์ด๊ฒƒ์ด ์™„์ „ํ•œ ํด๋ž˜์Šค๋ผ๋Š” ์ ์„ ์žŠ์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค . ์ฆ‰, ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ƒ์„ฑ์ž์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด์ „ ์ฝ”๋“œ ๋ถ€๋ถ„์—์„œ๋Š” ๋‹จ์ˆœํžˆ JANUARY, FEBRUARY, MARCH ๊ฐ’์„ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ enum Month๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
public enum Month {

   JANUARY("ะฏะฝะฒะฐั€ัŒ", 31),
   FEBRUARY("ะคะตะฒั€ะฐะปัŒ", 28),
   MARCH("ะœะฐั€ั‚", 31),
   APRIL("ะะฟั€ะตะปัŒ", 30),
   MAY("ะœะฐะน", 31),
   JUNE("ะ˜ัŽะฝัŒ", 30),
   JULY("ะ˜ัŽะปัŒ", 31),
   AUGUST("ะะฒะณัƒัั‚", 31),
   SEPTEMBER("ะกะตะฝั‚ัะฑั€ัŒ", 30),
   OCTOBER("ะžะบั‚ัะฑั€ัŒ", 31),
   NOVEMBER("ะะพัะฑั€ัŒ", 30),
   DECEMBER("ะ”ะตะบะฐะฑั€ัŒ", 31);

   private String name;
   private int daysCount;

   Month(String name, int daysCount) {
       this.name = name;
       this.daysCount = daysCount;
   }

   public static Month[] getWinterMonths() {

       return new Month[]{DECEMBER, JANUARY, FEBRUARY};
   }

   public static Month[] getSummerMonths() {

       return new Month[]{JUNE, JULY, AUGUST};
   }

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }

   public int getDaysCount() {
       return daysCount;
   }

   public void setDaysCount(int daysCount) {
       this.daysCount = daysCount;
   }

   @Override
   public String toString() {
       return "Month{" +
               "name='" + name + '\'' +
               ", daysCount=" + daysCount +
               '}';
   }
}
enum์—ฌ๊ธฐ์—๋Š” ์›” ์ด๋ฆ„๊ณผ ์ผ์ˆ˜, ์ด๋Ÿฌํ•œ ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ƒ์„ฑ์ž, getters-setters, ๋ฉ”์†Œ๋“œ ๋ฐ toString()2๊ฐœ์˜ ์ •์  ๋ฉ”์†Œ๋“œ ๋“ฑ 2๊ฐœ์˜ ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค . ๋ณด์‹œ๋‹ค์‹œํ”ผ ์—ฌ๊ธฐ์—๋Š” ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์•ž์„œ ๋งํ–ˆ๋“ฏ enum์ด ์ด๊ฒƒ์€ ๋ณธ๊ฒฉ์ ์ธ ์ˆ˜์—…์ž…๋‹ˆ๋‹ค.
import java.util.Arrays;

public class Main {

   public static void main(String[] args) {

       System.out.println(Arrays.toString(Month.getSummerMonths()));

   }

}
์ฝ˜์†” ์ถœ๋ ฅ:

[Month{name='ะ˜ัŽะฝัŒ', daysCount=30}, Month{name='ะ˜ัŽะปัŒ', daysCount=31}, Month{name='ะะฒะณัƒัั‚', daysCount=31}]
๋งˆ์ง€๋ง‰์œผ๋กœ Joshua Bloch์˜ "Effective Java" ๋ผ๋Š” Java์— ๊ด€ํ•œ ๋งค์šฐ ์œ ์šฉํ•œ ์ฑ…์„ ์ถ”์ฒœํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค . ์—ด๊ฑฐํ˜•.  ์‹ค์ œ ์‚ฌ๋ก€.  ์ƒ์„ฑ์ž์™€ ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€ - 3์ €์ž๋Š” Java ์ฐฝ์‹œ์ž ์ค‘ ํ•œ ๋ช…์ด๋ฏ€๋กœ ์–ธ์–ด โ€‹โ€‹๋„๊ตฌ์˜ ์˜ฌ๋ฐ”๋ฅด๊ณ  ์œ ๋Šฅํ•œ ์‚ฌ์šฉ์— ๋Œ€ํ•œ ๊ทธ์˜ ์กฐ์–ธ์„ ํ™•์‹คํžˆ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :) ์šฐ๋ฆฌ ๊ฐ•์˜์™€ ๊ด€๋ จํ•˜์—ฌ ์ฑ…์—์„œ enum. ์ƒ์‚ฐ์ ์ธ ๋…์„œ๋ฅผ ์ฆ๊ฒจ๋ณด์„ธ์š”! :)
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION