์ด๊ฑฐ(
Enum )๋ Java 5 ์์ ๋์
๋์์ผ๋ฉฐ ๊ทธ ์ดํ๋ก Java ๊ฐ๋ฐ์๋ค ์ฌ์ด์์ ๊ฝค ์ธ๊ธฐ๋ฅผ ์ป์์ต๋๋ค. ๋ค์ํ Java ์ ํ๋ฆฌ์ผ์ด์
์์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค. Java์ Enum์ C๋ C++๋ณด๋ค ํจ์ฌ ๋ ๋ค์ํ๊ธฐ ๋๋ฌธ์ ํฅ๋ฏธ๋ก์ด ์ฌ์ฉ ์ฌ๋ก๋ ๋ง์ด ์ ๊ณต๋ฉ๋๋ค. ๊ทธ ์ค ๋ช ๊ฐ์ง๋
Java์์ Enum์ ์ฌ์ฉํ๋ 10๊ฐ์ง ๋ฐฉ๋ฒ ๊ธฐ์ฌ์์ ๋ณธ ๊ฒ์
๋๋ค . ๊ทธ๋ฌ๋ ์ด๋ฌํ ์ธ๊ธฐ์๋ ๋ถ๊ตฌํ๊ณ ๋ง์ Java ํ๋ก๊ทธ๋๋จธ๋ ์ฌ์ ํ Enum์ด ์ ๊ณตํ๋ ๊ธฐ๋ฅ๊ณผ Java ์ฝ๋์์ Enum ์ฌ์ฉ์ ๋ณต์ก์ฑ์ ์ธ์ํ์ง ๋ชปํ๊ณ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด
Java์์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ Enum์ ๊ธฐ๋ฅ ์ด๋
Enum ์ธ๋ถ์์ Enum์ ์ธ์คํด์คํํ ์ ์๋ ์ด์ ์ ๋ํด ์ง๋ฌธํ๋ ์ฌ๋ฌ ๋
์๋ก๋ถํฐ ์ด๋ ๋ถ๋ช
ํด์ก์ต๋๋ค . ์ธํฐ๋ทฐ์์ ์ด์ ๋ํด ์ง๋ฌธ์ ๋ฐ์๋ค๋ ์ ์ ์ธ๊ธํ์ต๋๋ค. ์ด๋ ์ฐ๋ฆฌ๊ฐ ์ธํฐ๋ทฐ์์ ์ฑ๊ณตํ๋ ๋ฐ ๋์์ด ๋ ๋ฟ๋ง ์๋๋ผ ํ์ต์ ์ํ ์๋ก์ด ๊ธธ์ ์ฌ๋ ๋ฐ ๋์์ด ๋๋
์์ฃผ ๋ฌป๋ ์ง๋ฌธ ๋ชฉ๋ก์ Java Enum์ผ๋ก ์์ฑํ๋๋ก ์๊ฐ์ ์ฃผ์์ต๋๋ค . ์ด์ ์ ์ธ๊ธํ๋ฏ์ด ์ธํฐ๋ทฐ ์ง๋ฌธ์ผ๋ก ์ธํด ์ฃผ์ ๋ฅผ ๋ ์ฌ๊ฐํ๊ฒ ๋ฐ์๋ค์ด๊ฒ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ ๋์ ์ผ์ด ์๋๋ฉฐ Enum์ ์ฑ๋ฅ๊ณผ ์ ์ฉ์ฑ์ ๊ณ ๋ คํ๋ฉด ์ด์ Enum ๋ง์คํฐ๊ฐ ๋ ๋์
๋๋ค. ๋ค์์ Enum์ ๋ค์ํ ๊ธฐ๋ฅ๊ณผ ์์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ง๋ฌธ ๋ชฉ๋ก์
๋๋ค. ๋ฉด์ ์ค๋น ์๋ฃ๋ก ํ์ฉํ์
๋ ์ข๊ณ , ๋จ์ํ ์ด๊ฑฐํ ์๋ด์ฉ์ผ๋ก ํ์ฉํ์
๋ ์ข์ต๋๋ค. Java๋ฅผ ์ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Enum์ ๋ํด ์๋กญ๊ณ ์ ์ฉํ ๋ด์ฉ์ ๋ง์ด ๋ฐฐ์ฐ๊ฒ ๋ฉ๋๋ค.
1) Enum์ Java๋ก ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ์ ์์ต๋๊น? ์,
Enum์ ์ธํฐํ์ด์ค๋ฅผ ์์ํ ์ ์์ต๋๋ค .
Enum ์ ํ์ ํด๋์ค ๋ฐ
์ธํฐํ์ด์ค ์ ์ ์ฌํ๋ฏ๋ก ์ธํฐํ์ด์ค๋ฅผ ์์ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒฝ์ฐ์ ๋ฐ๋ผ Enum์ ์ฌ์ฉ์ ์ ์ ๊ตฌํ์ผ๋ก ์ฌ์ฉํ ๋ ๋๋ผ์ด ์ ์ฐ์ฑ์ ์ ๊ณตํฉ๋๋ค. ๋ค์์ ์ด ์ฉ๋์์ Enum์ ์ฌ์ฉํ๋ ์ข์ ์
์
๋๋ค .
2) Enum์ด ํด๋์ค๋ฅผ ์์(ํ์ฅ)ํ ์ ์๋์? ์๋์, ๊ทธ๋ด ์ ์์ต๋๋ค! ์ด์ ์ Enum ์ ํ์ด Java์ ํด๋์ค ๋๋ ์ธํฐํ์ด์ค์ ์ ์ฌํ๋ค๊ณ ๋งํ๊ธฐ ๋๋ฌธ์ ์์์น ๋ชปํ ์ผ์
๋๋ค. ๊ธ์, ์ด๊ฒ์ด ๋ฐ๋ก ์ด์ ์ง๋ฌธ ๋ฐ๋ก ๋ค์์ ์ด ์ง๋ฌธ์ ๋ฌป๋ ์ฃผ๋ ์ด์ ์
๋๋ค. Enum
์ ์ด๋ฏธ ์ถ์ ํด๋์ค
java.lang.Enum์ ์์ ํ๋ฏ๋ก Java๋ ๋ค์ค ํด๋์ค ์์์ ์ง์ํ์ง ์์ผ๋ฏ๋ก ๋ค๋ฅธ ํด๋์ค๋ ์์ํ ์ ์๋ค๋ ๊ฒ์ด ๋ถ๋ช
ํฉ๋๋ค.
java.lang.Enum ์์ ์์ํจ์ผ๋ก์จ ๋ชจ๋ ์ด๊ฑฐํ์๋
ordinal() ,
value() ๋๋
valueOf() ๋ฉ์๋๊ฐ ์์ต๋๋ค .
3) ๊ฐ์ฒด ์ธ์คํด์ค ์์ด Enum์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ฌด์์
๋๊น? ์ปดํ์ผ ์ค๋ฅ ์์ด ๊ฐ๋ฅํฉ๋๊น?
๋ฉด์ ๊ด๋ค์ด ์ข์ํ๋ ๊น๋ค๋ก์ด ์ง๋ฌธ ์ค ํ๋์
๋๋ค .
Enum์ ์์ผ ์ด๋
์๊ณผ ๊ฐ์ ํน์ ์์ ๊ฐ์ฒด ๋ชจ์์ผ๋ก ๊ฐ์ฃผ๋๋ฏ๋ก
์๋ฌด ๊ฒ๋ ์์ด Enum์ ์ป๋ ๊ฒ์ ์์ฌ์ค๋ฌ์ ๋ณด์
๋๋ค. ํ์ง๋ง ๊ทธ๋ ์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ ํธ๋ฆฌํฐ ํด๋์ค๋ฅผ ์์ฑํ์ฌ
์ธ์คํด์ค ์์ด Enum์ ์์ฑํ ์ ์์ต๋๋ค . ์ด๊ฒ์ Enum์ ์ฌ์ฉํ๋ ๋ ๋ค๋ฅธ ํ์ ์ ์ธ ๋ฐฉ๋ฒ์
๋๋ค.
public enum MessageUtil{ ; // required to avoid compiler error, also signifies no instance public static boolean isValid() { throw new UnsupportedOperationException("Not supported yet."); } }
4) Enum์ ๋ํด toString() ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ ์ ์์ต๋๊น? ์ฌ์ ์ํ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ ๋๋์? ๋ฌผ๋ก Enum์
toString() ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ํ ์ ์์ต๋๋ค.
java.lang.Object๋ฅผ ์์ ํ๊ณ
toString() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ํด๋์ค๋ฅผ ์ค๋ฒ๋ผ์ด๋ํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค . ๊ทธ๋ ๊ฒ ํ์ง ์๋๋ผ๋ ์ถ์ํ ๋๋ฌธ์ ์๋ฌด๊ฒ๋ ์์ง ์์ต๋๋ค. Enum ํด๋์ค์ ๊ธฐ๋ณธ์ด ์ด ์์
์ ์ํํ๊ณ Enum ์ธ์คํด์ค์ ์ด๋ฆ์ธ ์ด๋ฆ์ ๋ฐํํฉ๋๋ค. ๋ค์์ Enum ํด๋์ค์
toString() ๋ฉ์๋ ์ ๋ํ ์ฝ๋์
๋๋ค .
public String toString() { return name; }
name์ ์ปดํ์ผ๋ฌ๊ฐ Enum ํด๋์ค ์์ฒด์์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ์์ฑ์์์ ์์๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋ํ ์๋ต์ผ๋ก ์ด๊ฑฐํ์ ์์ฑํ๋ ์ฝ๋๋ฅผ ํ ๋นํ ๋ ์ง์ ๋ฉ๋๋ค.
java.lang.Enum ํด๋์ค :
protected Enum(String name, int ordinal) { this.name = name; this.ordinal = ordinal; }
์ด๊ฒ์ ํ๋ก๊ทธ๋จ์์ Enum ์ ์ธ์ ๋ํ ์๋ต์ผ๋ก ์ปดํ์ผ๋ฌ์ ์ํด ํธ์ถ๋๋
enum ์ ์์ฑํ๊ธฐ ์ํ ์ ์ผํ ์์ฑ์ ์
๋๋ค.
5) Enum ์ธ๋ถ์์ Enum์ ์ธ์คํด์คํํ ์ ์๋์? ์ ์ ๋ผ?
Enum์๋ ๊ณต๊ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์
Enum ๊ฒฝ๊ณ ์ธ๋ถ์์ Enum์ ์ธ์คํด์คํํ ์ ์์ต๋๋ค .
์์ฑ์์ด๋ฉฐ ์ปดํ์ผ๋ฌ์์๋ ๊ทธ๋ฌํ ์์ฑ์๋ฅผ ๋์
ํ๋ ๊ฒ์ ํ์ฉํ์ง ์์ต๋๋ค.
์ปดํ์ผ๋ฌ๋ Enum ์ ํ ์ ์ธ์ ๋ํ ์๋ต์ผ๋ก ๋๋ถ๋ถ์ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ Enum ๋ด์ ๊ณต์ฉ ์์ฑ์๋ฅผ ํ์ฉํ์ง ์์ผ๋ฏ๋ก Enum ์ธ์คํด์ค๊ฐ ๋ด๋ถ์ ์ผ๋ก ์ ์ธ๋์ด์ผ ํฉ๋๋ค.
6) Enum ๋ด๋ถ์ ์์ฑ์๋ฅผ ์ง์ ํ ์ ์๋์? ์ด ์ง๋ฌธ์ ์ด์ ์ง๋ฌธ ๋ค์ ์ค๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์, ๊ฐ๋ฅํฉ๋๋ค. ํ์ง๋ง ์ด๋
์ ์ฉ ๋๋
ํจํค์ง ์ ์ฉ ์์ฑ์์์๋ง ๊ฐ๋ฅํ๋ค๋ ์ ์ ๊ธฐ์ตํ์ธ์.
public ๋ฐ
protected ์์ฑ์๋ Enum์์ ํ์ฉ๋์ง ์์ต๋๋ค. ์ฌ๊ธฐ์
์ ๋ฅผ ๋ณผ ์ ์์ต๋๋ค .
7) == ๋๋ equals() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ Enum์ ๋น๊ตํ๋ ๊ฒ์ ์ฐจ์ด์ ์ ๋ฌด์์
๋๊น?
์ด๊ฒ์ ์ฌ๊ธฐ ์์ ์์ธํ ๋ค๋ฃจ๋ ๋งค์ฐ ๊ด๋ฒ์ํ๊ณ ๊น๋ค๋ก์ด ๋ฌธ์ ์
๋๋ค .
8) Enum์์ ordinal() ๋ฉ์๋๋ ๋ฌด์์ ํฉ๋๊น?
ordinal() ๋ฉ์๋๋ Enum ์ธ์คํด์ค๊ฐ Enum ๋ด์์ ์ง์ ๋ ์์๋ฅผ ๋ฐํํฉ๋๋ค. ์๋ฅผ ๋ค์ด
DayOfWeek Enum์์๋ ์์ผ์ ์์๋๋ก ์ง์ ํ ์ ์์ต๋๋ค.
DayOfWeek.MONDAY.ordinal()
public enum DayOfWeek{ MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; }
๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด 0์ด ๋ฐํ๋ฉ๋๋ค. ์ด๋ ์ฒซ ๋ฒ์งธ ์ธ์คํด์ค๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ค์ ์ํฉ์ ๋ฐ๋ผ ์์๋ฅผ ์ ๊ณตํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ์ฆ,
TUESDAY (ํ์์ผ)๊ฐ
MONDAY (์์์ผ) ์ดํ ,
WEDNESDAY (์์์ผ) ์ด์ ์์ ๋ํ๋
๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ์ด๊ฑฐํ์ ์ฌ์ฉํ์ฌ ์ฐ๋์ ์์ ๋ํ๋ผ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ 2์์ 1์ ๋ค์ ์ค๊ณ 3์ ์์ ์ต๋๋ค. ๋ชจ๋ ์ฌ์ฉ์ ์ ์ ์ด๊ฑฐํ์ ์ถ์ ํด๋์ค
java.lang.Enum ์์ ์ด ๋ฉ์๋๋ฅผ ์์ํ๋ฉฐ ์ด๋ฆ๊ณผ ์์๋ฅผ ์ฌ์ฉํ๋
java.lang.Enum ์์
๋ณดํธ๋ ์์ฑ์๋ฅผ ํธ์ถํ์ฌ ์ปดํ์ผ๋ฌ์ ์ํด ์ค์ ๋ฉ๋๋ค .
9) Java์์ TreeSet ๋๋ TreeMap๊ณผ ํจ๊ป Enum์ ์ฌ์ฉํ ์ ์์ต๋๊น? ์ด๊ฒ์ ์ ๋ง ํฅ๋ฏธ๋ก์ด Enum ์ง๋ฌธ์ด๋ฉฐ ์ฌ๋๋ค์ด ์ง์์ ๊น์ด๋ฅผ ํ
์คํธํ๊ธฐ ์ํด ๋ฌป๊ณ ์ถ์ดํ๋ ์ง๋ฌธ์
๋๋ค.
java.lang.Enum ์ฝ๋๋ฅผ ๋ณด๊ธฐ ์ ๊น์ง๋ Enum์ด
TreeSet ๋ฐ
TreeMap ๊ณผ ๊ฐ์ ์ ๋ ฌ๋ ์ปฌ๋ ์
์์ ์ฌ์ฉํ๊ธฐ ์ํ ํต์ฌ ์๊ตฌ ์ฌํญ์ธ
Comparable ์ธํฐํ์ด์ค๋ฅผ ์์ํ๋ค๋ ์ฌ์ค์ ์์ง ๋ชปํ ๊ฒ์
๋๋ค . Enum์ ๊ธฐ๋ณธ์ ์ผ๋ก
Comparable ์ธํฐํ์ด์ค๋ฅผ ์์ํ๋ฏ๋ก
TreeSet ๋ฐ
TreeMap ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค .
10) Enum์์ ordinal()๊ณผ CompareTo()์ ์ฐจ์ด์ ์ ๋ฌด์์
๋๊น? ์ด๋ ์ด์ ์ง๋ฌธ์์ ๋ฐ๋ก ์ด์ด์ง๋๋ค. ์ค์ ๋ก
CompareTo()๋ ๋ฉ์๋์์ ์ ๊ณตํ๋ ์์๋ฅผ ์๋ฎฌ๋ ์ด์
ํฉ๋๋ค.
Enum์ ์์ฐ์ค๋ฌ์ด ์์์ธ
ordinal() ์
๋๋ค. ๊ฐ๋จํ ๋งํด์ Enum์ ์ ์ธ๋ ์์๋๋ก ๋น๊ต๋ฅผ ์ ํํฉ๋๋ค. ๋ํ ์ด๋ฌํ ์์๋ ๋์ผํ ์ ํ์ ๋ค๋ฅธ ์์์๋ง ๋น๊ตํ ์ ์๋ค๋ ์ ์ ๊ธฐ์ตํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ์๋ก ๋ค๋ฅธ ์ ํ์ ์์๋ฅผ ๋น๊ตํ๋ฉด ์ปดํ์ผ๋ฌ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
11) ์ค์์น ์ผ์ด์ค์์ Enum์ ์ฌ์ฉํ ์ ์๋์? ๊ทธ๋ ๋ ํ ์์์ด. ๊ฒ๋ค๊ฐ ์ด๋ Enum์ ์ฌ์ฉํ๋ ์ฃผ์ ์ด์ ์ค ํ๋์
๋๋ค.
Enum ์ธ์คํด์ค๋ ์์ ์์๋ก ์ปดํ์ผ๋๋ฏ๋ก ์์ ํ๊ฒ ์ผ์ด์ค ๋ฐ ์ค์์น ๋ด๋ถ์ ์ฝ์
ํ ์ ์์ต๋๋ค . ๋ค์์ ์์ผ์ด ํฌํจ๋ ์ฝ๋์ ์์
๋๋ค.
public void developerState(DayOfWeek today){ switch(today){ case MONDAY: System.out.println("Hmmmmmmmm"); break; case TUESDAY: System.out.println("Hmmmm"); break; case FRIDAY : System.out.println("Yeahhhhhh"); break; } }
Enum๊ณผ Switch๋ ์๋ก๋ฅผ ์ ๋ณด์ํฉ๋๋ค. ํนํ Enum์ ์์์ ์์ ์ ์ธ ์์(์: ์ผ์ฃผ์ผ ์ค 7์ผ, 1๋
์ค 12๊ฐ์ ๋ฑ)๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
Enum๊ณผ ํจ๊ป
swith ์ผ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๋ค๋ฅธ ์์
๋๋ค .
12) ์ ์ฒด Enum ์ธ์คํด์ค๋ฅผ ๋ฐ๋ณตํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์
๋๊น?
java.lang.Enum ์ ์ด์๋ค๋ฉด
value() ๋ฉ์๋๊ฐ ๋ชจ๋ Enum ์์์ ๋ฐฐ์ด์ ๋ฐํํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค . ๋ชจ๋ ์ด๊ฑฐํ์
java.lang.Enum ์ ์์ํ๋ฏ๋ก
value() ๋ฉ์๋๋ฅผ ๊ฐ์ต๋๋ค . ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ํน์ ์ ํ์ ์ด๊ฑฐํ ์์๋ฅผ ๋ชจ๋ ๋ฐ๋ณตํ ์ ์์ต๋๋ค.
foreach ๋ฃจํ ์
value() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์งํ๋๋
์๋ฅผ ์ดํด๋ณด์ธ์ .
13) Enum์ ์ฑ๊ธํค์ผ๋ก ์ฌ์ฉํ๋ฉด ์ด๋ค ์ฅ์ ๊ณผ ๋จ์ ์ด ์๋์? Enum์ ์ฑ๊ธํค ํจํด ๊ตฌํ์ ์ํ
๋น ๋ฅธ ์ง๋ฆ๊ธธ์ ์ ๊ณตํ๋ฉฐ , Effective Java ์ฑ
์์๋ ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์ ์ธ๊ธฐ ์๋ ์ ํ์
๋๋ค. ์ธ๋ป ๋ณด๊ธฐ์ Enum ์ฑ๊ธํค์ ์ธ์คํด์คํ๋ฅผ ์ ์ดํ๊ณ ์์ ํ๊ฒ ์ง๋ ฌํํ ์ ์์ผ๋ฉฐ ๋ฌด์๋ณด๋ค๋ Enum์ ์ฌ์ฉํ์ฌ ์ค๋ ๋๋ก๋ถํฐ ์์ ํ ์ฑ๊ธํค์ ์ฝ๊ฒ ์์ฑํ ์ ์๋ค๋ ์ ์์ ์ ๋งํ๊ณ ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค. ๋ ์ด์ ๋ณ์์ ๋ณ๋์ฑ์ ์ด์ค์ผ๋ก ํ์ธํ๋ ๊ฒ์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์์ต๋๋ค.
์ฌ๊ธฐ์์ ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฅ์ ๊ณผ ๋จ์ ์ ๋ํด ์์ธํ ์์๋ณด์ธ์ .
14) int ์ด๊ฑฐํ๊ณผ String ์ด๊ฑฐํ ํจํด ๋์ Enum์ ์ฌ์ฉํ๋ฉด ์ด๋ค ์ด์ ์ด ์๋์? 5๋
์ด์ ํ๋ก๊ทธ๋๋ฐ์ ํด์๊ณ ์ฌ์ ํ JDK 1.3 ๋๋ 1.4๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด
๊ณต์ฉ ์ ์ ์ต์ข
์์ ์ ๋์ฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์๋ ค์ง ๊ณ ์ ์์ ์ปฌ๋ ์
์ ๋ํ๋ด๋
String ๋ฐ int ์ด๊ฑฐ ํจํด ์ ์ต์ํ ๊ฒ์
๋๋ค.
Days of the Week ์ ๊ฐ์ ๋ค์ํ ํญ๋ชฉ . ์ฌ๊ธฐ์๋ ๋ง์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์์ผ์ ๋ด๋นํ๋
String ๋ณ์๋ ์์์ ๊ฐ์ ๊ฐ์ง ์ ์์ผ๋ฏ๋ก Enum ์ ํ์ ๋ํด ๋
๋ฆฝ์ฑ์ด ์์ต๋๋ค . ๋ง์ฐฌ๊ฐ์ง๋ก ์ด๊ฑฐ ๊ฐ๋ฅํ
int๋ ์ด๋ค ๊ฐ์ด๋ ์ทจํ ์ ์์ผ๋ฉฐ ์ปดํ์ผ๋ฌ๋ ์ด๋ฅผ ๊ธฐ๊บผ์ด ๋ฐ์๋ค์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉํ์ฌ
Enum ์ ์ฌ์ฉํ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ํ์ธํ๋ ์ ํ ์์ ์ฑ์ ์ป์ ์ ์์ต๋๋ค. ๋ชจ๋ Java ๊ฐ๋ฐ์์๊ฒ ๊ถ์ฅ๋๋ Effective Java์๋ ์ด ์ฃผ์ ์ ๋ํ ๋ช ๊ฐ์ง ํฅ๋ฏธ๋ก์ด ์๊ฐ์ด ์์ต๋๋ค.
15) ๋ฌธ์์ด์ Enum์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์
๋๊น? ์ด๋ Java ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์์
String ๋ฐ
Enum ์ฌ์ฉ์ด ์ธ๊ธฐ๋ฅผ ๋๋ฉด์ ๋งค์ผ ์ ๊ธฐ๋๋ ์ง๋ฌธ์
๋๋ค .
Enum์ String์ผ๋ก ๋ณํํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์
String ์ธ์๋ฅผ ๊ฐ์ ธ์
Enum ์ผ๋ก ๋ฐํํ๋ Enum ์์ฒด์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ์ ์ํ๋ ๊ฒ์
๋๋ค . ๋์๋ฌธ์๋ฅผ ๋ฌด์ํ ์๋ ์์ต๋๋ค. ๋ค์์ ๋ฌธ์์ด์ ์ด๊ฑฐํ์ผ๋ก ๋ณํํ๋ ๋ช ๊ฐ์ง
์ ์
๋๋ค . ์ด๊ฒ์ผ๋ก Enum์ ๊ดํ 15๊ฐ์ง ์ง๋ฌธ(
๋ฐ ๋ต๋ณ ) ๋ชฉ๋ก์ด ๋๋ฌ์ต๋๋ค .
ํ์ง๋ง ๊ธฐ์ตํ์ธ์.
๋
์๋ ๋ฐฐ์ฐ๊ธฐ์ ์ถฉ๋ถํ์ง ์์ผ๋ฉฐ ๋จ์ง ์ฒซ ๋ฒ์งธ ๋จ๊ณ์ผ ๋ฟ์
๋๋ค . ์ด๊ฑฐํ์ ์ด์ ์ ์ป์ผ๋ ค๋ฉด ํ๋ก์ ํธ์์ Enum์ ์ฌ์ฉํ ์ ์๋ ์์น๋ฅผ ์ฐพ์ผ์ญ์์ค. ์ด๋ ์ค์ ๊ฒฝํ์ ์ ๊ณตํ ๊ฒ์ด๋ฉฐ ์ด ๊ฒฝํ์ ํตํด ์์ ๋ณด๋ค ๋ ๋ง์ ๊ฒ์ ๋ฐฐ์ฐ๊ฒ ๋ ๊ฒ์
๋๋ค. ๋ณต์กํ๊ณ ์์ธํ ๋ฐฉ๋ฒ ์๊ตฌ ์ฌํญ.
Enum์ ๋ํ ์ด๋ฌํ ์ง๋ฌธ์ ์ง์์ ํ
์คํธํ๊ธฐ ์ํด ์ฃผ์๋ฅผ ๊ธฐ์ธ์ผ ๊ฐ์น๊ฐ ์์ต๋๋ค. ํนํ ์ธํฐ๋ทฐ๋ฅผ ์๋๋ฅด๊ณ Enum ์ธ๊ณ์ ์์ธํ ๋ชฐ์
ํ ์๊ฐ์ด ์๋ ๊ฒฝ์ฐ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
GO TO FULL VERSION