[μ΄νŽ™ν‹°λΈŒ μžλ°”] Enum μ—΄κ±° νƒ€μž…

2022. 8. 31. 16:51ㆍJAVA/Effective JAVA

728x90

 

μ—΄κ±° νƒ€μž… Enumeration 

- μƒμˆ˜ λͺ©λ‘μ„ 담을 수 μžˆλŠ” 데이터 νƒ€μž… 
- νŠΉμ •ν•œ λ³€μˆ˜κ°€ κ°€μ§ˆ 수 μžˆλŠ” 값을 μ œν•œν•  수 μžˆλ‹€. 
- > Type-safe λ₯Ό 보μž₯ν•  수 μžˆλ‹€.  (λ³€μˆ˜κ°€ κ°€μ§ˆ 수 μžˆλŠ” 값을 μ œν•œν•΄μ„œ λ‹€λ₯Έ 값을 μž…λ ₯ λͺ»ν•˜κΈ° λ•Œλ¬Έ)
- 싱글톀 νŒ¨ν„΄μ„ κ΅¬ν˜„ν•  λ•Œ μ‚¬μš©ν•˜κΈ°λ„ ν•œλ‹€. 

 

 

 

질문1) νŠΉμ • enum νƒ€μž…μ΄ κ°€μ§ˆ 수 μžˆλŠ” λͺ¨λ“  값을 μˆœνšŒν•˜λ©° 좜λ ₯ν•˜λΌ. 

-> Enum의 values() λ©”μ„œλ“œλ₯Ό μ•„λŠ”μ§€ λ¬Όμ–΄λ³΄λŠ” 질문 

 

질문2) enum은 μžλ°”μ˜ 클래슀처럼 μƒμ„±μž, λ©”μ„œλ“œ, ν•„λ“œλ₯Ό κ°€μ§ˆ 수 μžˆλŠ”κ°€? 

λ‹Ήμ—°νžˆ μ‚¬μš©ν•  수 μžˆλ‹€. 

μ˜ˆμ œμ—μ„œλŠ” λŒ€μΆ© numberλΌλŠ” ν•„λ“œλ₯Ό 가지고, μƒμ„±μžλ₯Ό μƒμ„±ν–ˆλ‹€. 

 

질문3) enum의 값은 == μ—°μ‚°μžλ‘œ 동일성을 비ꡐ할 수 μžˆλŠ”κ°€?

equals보닀 ==λ₯Ό ꢌμž₯ν•˜λŠ” μ΄μœ λŠ” 

μ–΄λ–€ ν΄λž˜μŠ€μ—μ„œ OrderStatus enum νƒ€μž…μ΄ μ‘΄μž¬ν•œλ‹€κ³  ν•˜κ³ , 이λ₯Ό λΉ„κ΅ν•œλ‹€κ³  ν•œλ‹€λ©΄ 

XXClass.orderStatus.equals(OrderStatus.PREPARING) ν–ˆμ„ λ•Œ, 

class의 orderStatus 값이 null이라면 NPE κ°€ λ°œμƒν•˜κΈ° λ•Œλ¬Έμ— ꡳ이 μ—λŸ¬λ₯Ό λ³Ό ν•„μš”λŠ” μ—†μœΌλ‹ˆκΉŒ 

비ꡐ라면 == λ₯Ό μ‚¬μš©ν•΄μ„œ λΉ„κ΅ν•˜λŠ” 것을 ꢌμž₯ν•œλ‹€κ³  ν•œλ‹€. 

 

질문4) enum 을 key 둜 μ‚¬μš©ν•˜λŠ” Map을 μ •μ˜ν•˜μ‹œμ˜€. λ˜λŠ” enum을 담은 Set μ •μ˜ 

HashMap, HashSet을 μ‚¬μš©ν•˜λŠ” 것이 μ•„λ‹ˆλΌ EnumMap, EnumSet을 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€!

(μ†λ„λ‚˜ μ„±λŠ₯이 훨씬 쒋닀고함)

https://www.manty.co.kr/bbs/detail/develop?id=61 

 

[JAVA] EnumMap 을 μ‚¬μš©ν•©μ‹œλ‹€.

 

www.manty.co.kr

λ‚˜μ€‘μ— μ°Έκ³ ν•΄μ„œ 봐보자!! 

 

 

 

 

728x90