Enum μ΄λž€?!

niz wΒ·2024λ…„ 11μ›” 28일

Spring

λͺ©λ‘ 보기
9/17

πŸ‘‰ Enum μ΄λž€...

Enumeration의 μ•½μžλ‘œ μ—΄κ±°, λͺ©λ‘μ΄λΌλŠ” 의미

κ΄€λ ¨μžˆλŠ” μƒμˆ˜λ“€μ˜ 집합을 λ‚˜νƒ€λ‚΄λ©°,
Javaμ—μ„œ finalν•œ μƒνƒœλ‘œ!
κ³ μ •μ μœΌλ‘œ λ“€μ–΄μ˜€λŠ” Stringμ΄λ‚˜ int 등을 묢어놓은 역할이라고 ν•œλ‹€.

EX) μš”μΌ, κ³„μ ˆ, κΆŒν•œ, κ³Όλͺ© λ“±...


1. Enum은 heap λ©”λͺ¨λ¦¬μ— μƒμ„±λœλ‹€.

클래슀둜 μ»΄νŒŒμΌλ˜μ–΄ 일반적인 객체와 λ§ˆμ°¬κ°€μ§€λ‘œ heap λ©”λͺ¨λ¦¬μ— 생성이 λœλ‹€.

2. κ³ μ •λœ μΈμŠ€ν„΄μŠ€λ‘œμ„œ static ν•„λ“œμ— μ •μ˜λœλ‹€.

Enum μƒμˆ˜λŠ” ν•΄λ‹Ή Enum νƒ€μž…μ˜ μœ μΌν•œ μΈμŠ€ν„΄μŠ€λ‘œ μ‘΄μž¬ν•˜λ©°, ν•΄λ‹Ή μƒμˆ˜λ“€μ€ Enum μ •μ˜ μ‹œμ μ— 생성이 λœλ‹€.
클래슀의 static ν•„λ“œλ‘œ 정적 μ΄ˆκΈ°ν™”λ˜λ©°, 클래슀의 μƒμ„±μžμ—μ„œ μƒμˆ˜μ˜ μ΄ˆκΈ°ν™” μž‘μ—…μ΄ μ§„ν–‰λœλ‹€.
λ”°λΌμ„œ, 이미 μ •μ˜λœ μƒμˆ˜ μΈμŠ€ν„΄μŠ€λ₯Ό κ°€μ§€κ³  μžˆμœΌλ―€λ‘œ, μ‚¬μš©ν•  λ•Œλ§ˆλ‹€ μƒˆλ‘œμš΄ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜μ§€ μ•Šκ²Œ λœλ‹€.




πŸ‘‰ Enum을 μ™œ μ“°λŠ” 걸까??

  • ν—ˆμš© κ°€λŠ₯ν•œ 값을 μ œν•œν•  수 μžˆλ‹€.
  • μˆ˜μ •ν•  경우 λ³€κ²½ λ²”μœ„κ°€ μ΅œμ†Œν™” λœλ‹€.

    λ§Œμ•½ κΆŒν•œμ— λŒ€ν•΄μ„œ 수λ₯Ό λŠ˜λ¦°λ‹€κ³  해도,
    DB의 λ‚΄μš©μ„ 냅두고 Enum 클래슀 파일만 μˆ˜μ •ν•΄μ£Όλ©΄ 좜λ ₯ν•˜λŠ” 값은 μžλ™μœΌλ‘œ 적용이 λœλ‹€.

  • 컴파일 μ‹œ 데이터 νƒ€μž… 및 μœ νš¨μ„± 체크λ₯Ό ν•  수 μžˆλ‹€.
  • μ½”λ“œκ°€ λ‹¨μˆœν•΄μ§€κ³  가독성이 μ’‹μ•„μ§„λ‹€.
  • μΈμŠ€ν„΄μŠ€μ˜ 생성과 상속을 λ°©μ§€ν•˜μ—¬ μƒμˆ˜κ°’μ˜ μ•ˆμ •μ„±μ΄ 보μž₯λœλ‹€.
  • IDE 지원을 받을 수 μžˆλ‹€.
  • λ¬Έλ§₯(Context)을 담을 수 μžˆλ‹€.



πŸ‘‰ Enum μ •μ˜ν•˜λŠ” 방법

μ˜ˆμ‹œλ‘œ 과일을 ν•œλ‹€κ³  ν•˜μž.
μ—¬λŸ¬ μƒμˆ˜ν˜• 객체λ₯Ό μž‘μ„±ν•΄λ†“μ€ Util 클래슀 등이 μžˆλ‹€κ³  해도...κ°€μ Έλ‹€ 쓰기에 κ·Έ μˆ˜κ°€ λ§Žλ‹€λ³΄λ©΄ ν—·κ°ˆλ¦΄ μˆ˜κ°€ μžˆλ‹€.
그리고 ν•΄λ‹Ή ν”„λ‘œμ νŠΈμ—μ„œ μ„€μ •ν•œ 그룹의 λ²”μœ„κ°€ μ–΄λ””κΉŒμ§€μΈμ§€ μ•ŒκΈ°λ„ μ–΄λ ΅λ‹€!

Public enum Fruit{
	apple,
    banana,
    grape,
    watermelon,
    peach;
}

클래슀 μž‘μ„±μ„ μœ„μ™€ 같은 μ‹μœΌλ‘œ ν•΄μ£Όλ©΄ λœλ‹€.

λŒ€μ‹  μƒμ„±μž μ •μ˜λŠ” Private으둜 ν•΄μ•Ό 컨파일 μ—λŸ¬κ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€!
κ³ μ •λœ μƒμˆ˜μ˜ 집합이기에 λŸ°νƒ€μž„μ΄ μ•„λ‹Œ 컴파일 νƒ€μž„μ— κ³ μ •λ˜λ„λ‘ ν•΄μ•Όν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.




πŸ‘‰ Enum이 μ œκ³΅ν•˜λŠ” λ©”μ„œλ“œ

λ©”μ„œλ“œ κΈ°λŠ₯
toString() ν•΄λ‹Ή μƒμˆ˜ 이름을 λ¬Έμžμ—΄λ‘œ λ°˜ν™˜ (μ˜€λ²„λΌμ΄λ”© κ°€λŠ₯)
name() ν•΄λ‹Ή μƒμˆ˜ 이름을 λ¬Έμžμ—΄λ‘œ λ°˜ν™˜ (μ˜€λ²„λΌμ΄λ”© λΆˆκ°€)
compareTo() - μ •λ ¬μ˜ 기쀀을 μœ„ν•œ λ©”μ„œλ“œλ‘œ, 비ꡐ λŒ€μƒλ³΄λ‹€ μˆœμ„œκ°€ λΉ λ₯΄λ©΄ -1, κ°™μœΌλ©΄ 0, 느리면 1 λ°˜ν™˜
- μ •λ ¬ μˆœμ„œλŠ” μƒμˆ˜κ°€ μ„ μ–Έλœ μˆœμ„œκ°€ λ””ν΄νŠΈλ‘œ μ§€μ •
ordinal() - μƒμˆ˜μ˜ μ„ μ–Έ μˆœμ„œμ— λ”°λ₯Έ 인덱슀 값을 λ°˜ν™˜(0λΆ€ν„° μ‹œμž‘)
- Enum μžμ²΄μ— private final int ordinal이 μ •μ˜λ˜μ–΄ 이λ₯Ό μ‚¬μš©ν•¨
valueOf() 인자둜 받은 이름과 같은 Enum κ°’μœΌλ‘œ λ°˜ν™˜
values() μ„ μ–Έλœ λͺ¨λ“  Enum 값을 μˆœμ„œλŒ€λ‘œ 배열에 λ‹΄μ•„ λ°˜ν™˜



λ‹€μŒ κΈ€μ—μ„œ μ‹€μ œ ν”„λ‘œμ νŠΈμ—μ„œλŠ” μ–΄λ–»κ²Œ μ‚¬μš©ν–ˆλŠ”μ§€ 담아보렀고 ν•œλ‹€!

0개의 λŒ“κΈ€