๐Ÿ“•JAVA

[JAVA] ์—ด๊ฑฐํ˜• - ENUM

๋น™๋””์šฉ 2024. 4. 24.

1. ๋ฌธ์ž์—ด๊ณผ ํƒ€์ž… ์•ˆ์ „์„ฑ

* String ์‚ฌ์šฉ ์‹œ ํƒ€์ž… ์•ˆ์ •์„ฑ ๋ถ€์กฑ ๋ฌธ์ œ

- ๊ฐ’์˜ ์ œํ•œ ๋ถ€์กฑ : String์œผ๋กœ ์ƒํƒœ๋‚˜ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ํ‘œํ˜„ํ•˜๋ฉด ์ž˜๋ชป๋œ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.

- ์ปดํŒŒ์ผ ์‹œ ์˜ค๋ฅ˜ ๊ฐ์ง€ ๋ถˆ๊ฐ€ : ์ด๋Ÿฌํ•œ ์ž˜๋ชป์€ ์ปดํŒŒ์ผ ์‹œ์—๋Š” ๊ฐ์ง€๋˜์ง€ ์•Š๊ณ , ๋Ÿฐํƒ€์ž„์—์„œ๋งŒ ๋ฌธ์ œ๊ฐ€ ๋ฐœ๊ฒฌ๋˜์–ด ๋””๋ฒ„๊น…์ด ์–ด๋ ค์›Œ์งˆ ์ˆ˜ ์žˆ๋‹ค.

- ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŠน์ • ๋ฒ”์œ„๋กœ ๊ฐ’์„ ์ œํ•œํ•ด์•ผ ํ•˜์ง€๋งŒ, String์€ ์ด๋ฅผ ๋ง‰์„ ์ˆ˜ ์—†๋‹ค.

- ์ƒ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค๊ณ  ํ•ด๋„ ๊ฒฐ๊ตญ ๊ทผ๋ณธ์ ์ธ ํƒ€์ž…์€ String์ด๊ธฐ ๋•Œ๋ฌธ์— ์–ธ์ œ๋“  ๋‹ค๋ฅธ๊ฐ’์ด ์‚ฌ์šฉ๋  ์ˆ˜ ๋„ ์žˆ๋‹ค.

2. ํƒ€์ž… ์•ˆ์ „ ์—ด๊ฑฐํ˜• ํŒจํ„ด

enum : enumeration์˜ ์ค„์ž„๋ง์ด๋ฉฐ ์—ด๊ฑฐ๋ผ๋Š” ๋œป์ด๋ฉฐ ์–ด๋–ค ํ•ญ๋ชฉ์„ ๋‚˜์—ดํ•˜๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค.

- ์ƒ์ˆ˜์™€ private์ƒ์„ฑ์ž ๊นŒ์ง€ ์‚ฌ์šฉํ•ด ์™ธ๋ถ€์—์„œ์˜ ๊ฐ’ ๋ณ€๊ฒฝ์„ ์™„๋ฒฝํ•˜๊ฒŒ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค.

public class ClassGrade {
	
    public static final ClassGrade BASIC = new ClassGrade();
    public static final CalssGrade GOLD = new CLassGrade();
    public static final ClassGrade DIAMOND = new ClassGrade();
    
    private ClassGrade(){}  
}

 

1) ํƒ€์ž… ์•ˆ์ „ ์—ด๊ฑฐํ˜• ํŒจํ„ด์˜ ์žฅ์ 

- ํƒ€์ž… ์•ˆ์ •์„ฑ ํ–ฅ์ƒ : ์ •ํ•ด์ง„ ๊ฐ์ฒด๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ž˜๋ชป๋œ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๊ทผ๋ณธ์ ์œผ๋กœ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

- ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ : ์ •ํ•ด์ง„ ๊ฐ์ฒด๋งŒ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์ด ๋ณด์žฅ๋œ๋‹ค.

- ์ œํ•œ๋œ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ : ํด๋ž˜์Šค๋Š” ์‚ฌ์ „์— ์ •์˜๋œ ๋ช‡ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค๋งŒ ์ƒ์„ฑํ•˜๊ณ , ์™ธ๋ถ€์—์„œ๋Š” ์ด ์ธ์Šคํ„ด์Šค๋“ค๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

   ์ด๋ฅผ ํ†ตํ•ด ๋ฏธ๋ฆฌ ์ •์˜๋œ ๊ฐ’๋“ค๋งŒ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณด์žฅํ•œ๋‹ค.

- ํƒ€์ž… ์•ˆ์ „์„ฑ : ์ด ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด, ์ž˜๋ชป๋œ ๊ฐ’์ด ํ• ๋‹น๋˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ์ปดํŒŒ์ผ ์‹œ์ ์—์„œ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

2) ๋‹จ์ 

- ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ง„๋‹ค.

3. ์—ด๊ฑฐํ˜• - Enum Type

- ์ž๋ฐ”๋Š” ํƒ€์ž… ์•ˆ์ „ ์—ด๊ฑฐํ˜• ํŒจํ„ด์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ด๊ฑฐํ˜•์„ ์ œ๊ณตํ•œ๋‹ค.

- ์ƒ์ˆ˜์˜ ์ง‘ํ•ฉ์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

public enum Grade {
	BASIC, GOLD, DIAMOND
}

- class ๋Œ€์‹  enum์„ ์‚ฌ์šฉํ•˜๋ฉฐ ClassGrade์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค.

1) enum์˜ ์žฅ์ 

- ํƒ€์ž… ์•ˆ์ •์„ฑ ํ–ฅ์ƒ : ์—ด๊ฑฐํ˜•์€ ์‚ฌ์ „์— ์ •์˜๋œ ์ƒ์ˆ˜๋“ค๋กœ๋งŒ ๊ตฌ์„ฑ๋˜๋ฏ€๋กœ, ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฐ’์ด ์ž…๋ ฅ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์—†๋‹ค.

- ๊ฐ„๊ฒฐ์„ฑ ๋ฐ ์ผ๊ด€์„ฑ : ์—ด๊ฑฐํ˜•์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ๋ช…ํ™•ํ•ด์ง€๋ฉฐ, ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์ด ๋ณด์žฅ๋œ๋‹ค.

- ํ™•์žฅ์„ฑ : ์ƒˆ๋กœ์šด ํšŒ์› ๋“ฑ๊ธ‰ ํƒ€์ž…์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ, ENUM์— ์ƒˆ๋กœ์šด ์ƒ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

4. ์—ด๊ฑฐํ˜• - ์ฃผ์š” ๋ฉ”์„œ๋“œ

- value() : ๋ชจ๋“  enum ์ƒ์ˆ˜๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

- name() : enum์˜ ์ด๋ฆ„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

- ordinal() : enum์˜ ์ˆœ์„œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. (0 ๋ถ€ํ„ฐ ์‹œ์ž‘)

- valueOf(String name) : ์ฃผ์–ด์ง„ ์ด๋ฆ„๊ณผ ์ผ์น˜ํ•˜๋Š” ENUM ์ƒ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

- toString() : enum ์ด๋ฆ„์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜. ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ name()๊ณผ ๋‹ค๋ฆ„

 

- ์ฐธ๊ณ  : ๊น€์˜ํ•œ์˜ ์‹ค์ „ ์ž๋ฐ” - ์ค‘๊ธ‰ 1ํŽธ

๋Œ“๊ธ€