Search

Java ์ฐธ์กฐ์ž๋ฃŒํ˜• - enum

Java ์ฐธ์กฐ์ž๋ฃŒํ˜• - enum ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ!

์ด ์˜์ƒ์€ Java์—์„œ **enum(์—ด๊ฑฐํ˜•)**์ด๋ผ๋Š” ์ฐธ์กฐ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•ด ์ƒ์ˆ˜๋ฅผ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ๋˜ํ•œ, enum์„ ํ™œ์šฉํ•ด ๊ฐ„๋‹จํ•œ ํ•  ์ผ(To-Do) ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ์‹ค์Šต๊นŒ์ง€ ์ง„ํ–‰ํ•ด์š”. enum์ด ๋ฌด์—‡์ธ์ง€, ์–ด๋–ป๊ฒŒ ์“ฐ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์‹ค์ƒํ™œ ์˜ˆ์‹œ์ธ ํ•  ์ผ ์ƒํƒœ ๊ด€๋ฆฌ์— ์–ด๋–ป๊ฒŒ ์ ์šฉํ•˜๋Š”์ง€ ๋‹จ๊ณ„๋ณ„๋กœ ๋ฐฐ์›Œ๋ด…๋‹ˆ๋‹ค.

๋ชฉ์ฐจ

1.
enum์ด๋ž€? ์™œ ์“ฐ๋Š” ๊ฑธ๊นŒ? [00:00:00]
2.
enum ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ์™€ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ• [00:06:27]
3.
enum ๋ฉ”์†Œ๋“œ: values(), valueOf(), ordinal() [00:12:50]
4.
์‹ค์Šต: ํ•  ์ผ(To-Do) ์ƒํƒœ ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค๊ธฐ [00:15:41]
5.
enum ์ƒ์„ฑ์ž์™€ ๊ฐ’ ์ง€์ •ํ•˜๊ธฐ [00:21:19]
6.
ํ•  ์ผ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ ์ž‘์„ฑ๊ณผ ๋ฉ”๋‰ด ๊ตฌํ˜„ [00:32:11]
7.
ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๋ฐ ์ƒํƒœ ๋ณ€๊ฒฝ ํ…Œ์ŠคํŠธ [01:02:51]
8.
๋งˆ๋ฌด๋ฆฌ ๋ฐ enum ํ™œ์šฉ ์ •๋ฆฌ [01:17:34]

enum์ด๋ž€? ์™œ ์“ฐ๋Š” ๊ฑธ๊นŒ? [00:00:00]

โ€ข
*enum(์—ด๊ฑฐํ˜•)**์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ƒ์ˆ˜(๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฐ’)๋ฅผ ํ•œ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด ๊ด€๋ฆฌํ•˜๋Š” ํŠน๋ณ„ํ•œ ์ž๋ฃŒํ˜•์ด์—์š”.
โ€ข
์˜ˆ๋ฅผ ๋“ค์–ด, ๋นจ๊ฐ•, ํŒŒ๋ž‘, ์ดˆ๋ก ๊ฐ™์€ ์ƒ‰์„ ๊ฐ๊ฐ ์ƒ์ˆ˜๋กœ ์„ ์–ธํ•˜๋ฉด ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ต์ง€๋งŒ, enum์œผ๋กœ ๋ฌถ์œผ๋ฉด "์ƒ‰์ƒ"์ด๋ผ๋Š” ํ•˜๋‚˜์˜ ๊ทธ๋ฃน์œผ๋กœ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์ฃ .
โ€ข
์ƒ์ˆ˜ ์˜†์— ๊ด„ํ˜ธ๋กœ ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ๋Š”๋ฐ, ์ด๋•Œ๋Š” **์ƒ์„ฑ์ž(Constructor)**๋ผ๋Š” ํŠน๋ณ„ํ•œ ๋ฉ”์†Œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•ด์š”.

enum ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ์™€ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ• [00:06:27]

โ€ข
enum์€ ํด๋ž˜์Šค์ฒ˜๋Ÿผ ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”.
โ€ข
์˜ˆ๋ฅผ ๋“ค์–ด,ย Rainbow๋ผ๋Š” enum ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋นจ๊ฐ•, ์ฃผํ™ฉ, ๋…ธ๋ž‘, ์ดˆ๋ก, ํŒŒ๋ž‘, ๋‚จ์ƒ‰, ๋ณด๋ผ์ƒ‰์„ ๋‚˜์—ดํ•ด ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์ฃ .
โ€ข
์ด๋ ‡๊ฒŒ ๋งŒ๋“  enum์€ ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œย importํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.

enum ๋ฉ”์†Œ๋“œ: values(), valueOf(), ordinal() [00:12:50]

โ€ข
values()ย : enum์— ์„ ์–ธ๋œ ๋ชจ๋“  ์ƒ์ˆ˜๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•ด์ค˜์š”. ์˜ˆ๋ฅผ ๋“ค์–ด,ย Rainbow.values()๋Š” ๋นจ๊ฐ•๋ถ€ํ„ฐ ๋ณด๋ผ๊นŒ์ง€ ๋ชจ๋‘ ๊ฐ€์ ธ์™€์š”.
โ€ข
valueOf("ํผํ”Œ")ย : ๋ฌธ์ž์—ด๊ณผ ์ผ์น˜ํ•˜๋Š” enum ์ƒ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ด์š”. "ํผํ”Œ"์„ ๋„ฃ์œผ๋ฉดย Rainbow.PURPLE์„ ์–ป๋Š” ๊ฑฐ์ฃ .
โ€ข
ordinal()ย : enum ์ƒ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ์ˆœ์„œ(์ธ๋ฑ์Šค)๋ฅผ ์•Œ๋ ค์ค˜์š”. 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๋ช‡ ๋ฒˆ์งธ์ธ์ง€ ์ˆซ์ž๋กœ ๋ฐ˜ํ™˜ํ•ด์š”.

์‹ค์Šต: ํ•  ์ผ(To-Do) ์ƒํƒœ ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค๊ธฐ [00:15:41]

โ€ข
ํ•  ์ผ์˜ ์ƒํƒœ(์‹œ์ž‘ ์ „, ์ง„ํ–‰ ์ค‘, ์™„๋ฃŒ)๋ฅผ enum์œผ๋กœ ๊ด€๋ฆฌํ•ด๋ณด๋Š” ์‹ค์Šต์ด์—์š”.
โ€ข
์ƒํƒœ๋ฅผ enum์œผ๋กœ ๋ฌถ์œผ๋ฉด, ์ƒํƒœ ๋ณ€๊ฒฝ์ด๋‚˜ ๊ด€๋ฆฌ๊ฐ€ ํ›จ์”ฌ ๊น”๋”ํ•ด์ง€๊ณ  ์˜ค๋ฅ˜๋„ ์ค„์ผ ์ˆ˜ ์žˆ์–ด์š”.
โ€ข
์˜ˆ๋ฅผ ๋“ค์–ด,ย Status.START, Status.ING, Status.DONE์ฒ˜๋Ÿผ ์ƒํƒœ๋ฅผ ์„ ์–ธํ•˜๊ณ , ํ•  ์ผ ๊ฐ์ฒด์— ์ƒํƒœ๋ฅผ ์ง€์ •ํ•ด ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

enum ์ƒ์„ฑ์ž์™€ ๊ฐ’ ์ง€์ •ํ•˜๊ธฐ [00:21:19]

โ€ข
enum ์ƒ์ˆ˜์— ๊ฐ’์„ ๋ถ™์ด๊ณ  ์‹ถ์œผ๋ฉด ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ด์š”.
โ€ข
์ƒ์„ฑ์ž๋Š” enum ๋‚ด๋ถ€์— ํŠน๋ณ„ํ•œ ๋ฉ”์†Œ๋“œ๋กœ, ์ƒ์ˆ˜๋งˆ๋‹ค ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ์—ญํ• ์„ ํ•ด์š”.
โ€ข
์˜ˆ๋ฅผ ๋“ค์–ด,ย START("์‹œ์ž‘ ์ „")์ฒ˜๋Ÿผ ๊ด„ํ˜ธ ์•ˆ์— ๋ฌธ์ž์—ด์„ ๋„ฃ์œผ๋ฉด, ์ƒ์„ฑ์ž๊ฐ€ ์ด ๊ฐ’์„ ๋ฐ›์•„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
โ€ข
์ƒ์„ฑ์ž์™€ ๊ฐ’์„ ์ €์žฅํ•  ๋ณ€์ˆ˜๋ฅผ enum ์•ˆ์— ์„ ์–ธํ•˜๊ณ , ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋„ ํ•จ๊ป˜ ๋งŒ๋“ค์–ด์š”.

ํ•  ์ผ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ ์ž‘์„ฑ๊ณผ ๋ฉ”๋‰ด ๊ตฌํ˜„ [00:32:11]

โ€ข
์ตœ๋Œ€ 10๊ฐœ์˜ ํ•  ์ผ์„ ์ €์žฅํ•  ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ , ํ•  ์ผ ์ถ”๊ฐ€, ๋ชฉ๋ก ๋ณด๊ธฐ, ์ƒํƒœ ๋ณ€๊ฒฝ, ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ ๊ธฐ๋Šฅ์„ ๋ฉ”๋‰ด๋กœ ๊ตฌํ˜„ํ•ด์š”.
โ€ข
์Šค์บ๋„ˆ๋กœ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›๊ณ , ์Šค์œ„์น˜๋ฌธ์œผ๋กœ ๋ฉ”๋‰ด ์„ ํƒ์— ๋”ฐ๋ผ ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
ํ•  ์ผ ์ถ”๊ฐ€ ์‹œ ์ด๋ฆ„๊ณผ ์ƒํƒœ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๋ฐฐ์—ด์— ์ €์žฅํ•˜๊ณ , ๋ชฉ๋ก ๋ณด๊ธฐ๋กœ ํ•  ์ผ๊ณผ ์ƒํƒœ๋ฅผ ์ถœ๋ ฅํ•ด์š”.

ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๋ฐ ์ƒํƒœ ๋ณ€๊ฒฝ ํ…Œ์ŠคํŠธ [01:02:51]

โ€ข
์‹คํ–‰ ํ›„ ํ•  ์ผ์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ถ”๊ฐ€ํ•ด๋ณด๊ณ , ๋ชฉ๋ก์—์„œ ๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•ด์š”.
โ€ข
์ƒํƒœ ๋ณ€๊ฒฝ ๋ฉ”๋‰ด์—์„œ ํ•  ์ผ ๋ฒˆํ˜ธ๋ฅผ ์„ ํƒํ•˜๊ณ , ์‹œ์ž‘ ์ „, ์ง„ํ–‰ ์ค‘, ์™„๋ฃŒ ์ค‘ ์›ํ•˜๋Š” ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์–ด์š”.
โ€ข
์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๋ชฉ๋ก์—์„œ ๋ฐ”๋กœ ํ™•์ธ ๊ฐ€๋Šฅํ•ด์š”.
โ€ข
์ž…๋ ฅ ์‹œ ๋‚จ์•„์žˆ๋Š” ์—”ํ„ฐํ‚ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ดย nextLine()์„ ์ถ”๊ฐ€๋กœ ํ˜ธ์ถœํ•˜๋Š” ํŒ๋„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

๋งˆ๋ฌด๋ฆฌ ๋ฐ enum ํ™œ์šฉ ์ •๋ฆฌ [01:17:34]

โ€ข
enum์€ ์ƒ์ˆ˜๋“ค์˜ ์ง‘ํ•ฉ์„ ๋งŒ๋“ค์–ด ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์˜ˆ์š”.
โ€ข
ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ƒํƒœ๋‚˜ ๋ถ„๋ฅ˜์ฒ˜๋Ÿผ ํ•œ์ •๋œ ๊ฐ’๋“ค์„ ๊น”๋”ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ๋•Œ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
โ€ข
์ด๋ฒˆ ์˜์ƒ์—์„œ๋Š” enum์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๋ถ€ํ„ฐ ์ƒ์„ฑ์ž ํ™œ์šฉ, ๊ทธ๋ฆฌ๊ณ  ์‹ค์ƒํ™œ ์˜ˆ์‹œ์ธ ํ•  ์ผ ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ๊นŒ์ง€ ์‹ค์Šตํ•˜๋ฉฐ ์ดํ•ด๋ฅผ ๋†’์˜€์–ด์š”.
โ€ข
์•ž์œผ๋กœ ํด๋ž˜์Šค์™€ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์šธ ๋•Œ enum์„ ๋” ๊นŠ๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์š”์•ฝ

Java์˜ย enum์€ ์—ฌ๋Ÿฌ ์ƒ์ˆ˜๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด ๊ด€๋ฆฌํ•˜๋Š” ์ฐธ์กฐ์ž๋ฃŒํ˜•์ž…๋‹ˆ๋‹ค.ย values(),ย valueOf(),ย ordinal()ย ๊ฐ™์€ ๋ฉ”์†Œ๋“œ๋กœ enum ์ƒ์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ณ , ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ๊ฐ ์ƒ์ˆ˜์— ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์–ด์š”. ์˜์ƒ์—์„œ๋Š” enum์„ ํ™œ์šฉํ•ด ํ•  ์ผ(To-Do) ์ƒํƒœ ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด, enum์ด ์‹ค๋ฌด์—์„œ ์–ด๋–ป๊ฒŒ ์“ฐ์ด๋Š”์ง€ ์นœ์ ˆํ•˜๊ฒŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. enum ๋•๋ถ„์— ํ”„๋กœ๊ทธ๋žจ์ด ๋” ๊น”๋”ํ•˜๊ณ  ์˜ค๋ฅ˜ ์—†์ด ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ , ๊ผญ ๊ธฐ์–ตํ•˜์„ธ์š”!