Enum

μ—΄κ±° νƒ€μž…(Enum)

μ—΄κ±° νƒ€μž…μ€ κ³ μ • 갯수의 μƒμˆ˜λ“€λ‘œ 값이 κ΅¬μ„±λ˜λŠ” μžλ£Œν˜•μ΄λ‹€.

무슨 말이냐면,

public static final String ONE = "1";
public static final String TWO = "2";
public static final String THREE = "3";
public static final String FOUR = "4";

// enum
public enum Number {
    ONE("1"), TWO("2"), THREE("3"), FOUR("4")
}

μ΄λ ‡κ²Œ μƒμˆ˜λ“€μ„ ν΄λž˜μŠ€μ— 묢어놓은 것이닀.

μ—΄κ±°ν˜• ν•­λͺ©μ— μ ‘κ·Όν•˜κ³  μ‹ΆμœΌλ©΄, Number.ONE 같은 ν‘œκΈ°λ²•μ„ μ‚¬μš©ν•΄μ„œ μ ‘κ·Όν•  수 μžˆλ‹€.

μž₯점

  1. Type Safety

컴파일 νƒ€μž„μ— νƒ€μž… μ•ˆμ „μ„±μ„ 보μž₯ν•΄μ€€λ‹€.

  • 즉, μ—°μ‚°μ΄λ‚˜ 쑰직에 μžˆμ–΄μ„œ 비논리적인 뢀뢄에 λŒ€ν•΄μ„œ check ν•˜μ—¬ Runtime 전에 였λ₯˜λ₯Ό μ˜ˆλ°©ν•œλ‹€.

  1. 가독성과 μœ μ§€ 보수 용이

enum은 값듀이 λͺ…μ‹œμ μœΌλ‘œ μ •μ˜λ˜μ–΄ 있기 λ•Œλ¬Έμ— μ½”λ“œλ₯Ό 읽을 λ•Œ 어렀움이 μ—†κ³  μ½”λ“œμ˜ 의미λ₯Ό λͺ…ν™•ν•˜κ²Œ ν‘œν˜„ν•˜κ³  μžˆλ‹€. 또, μƒˆλ‘œμš΄ μƒμˆ˜λ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ κΈ°μ‘΄ μƒμˆ˜λ₯Ό λ³€κ²½ν•˜λ”λΌλ„ μ‚¬μš©ν•˜λŠ” κ³³μ—μ„œ μžλ™μœΌλ‘œ μ μš©λœλ‹€.

  1. 싱글톀

  • μ‹±κΈ€ν†€μ΄λž€, ν•˜λ‚˜μ˜ JVMλ‹Ή ν•˜λ‚˜μ˜ μΈμŠ€ν„΄μŠ€λ§Œ μ‘΄μž¬ν•˜λŠ” 클래슀λ₯Ό μ˜λ―Έν•œλ‹€. λ™μΌν•œ μ‹±κΈ€ν„΄ μΈμŠ€ν„΄μŠ€λŠ”, μ—¬λŸ¬ μŠ€λ ˆλ“œμ—μ„œ μž¬μ‚¬μš© ν•  수 μžˆλ‹€.

μƒμˆ˜λŠ” type safetyν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 동등성("==") 비ꡐλ₯Ό ν”Όν•˜λŠ” 것이 μ’‹λ‹€. 또, μƒμˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ switch문을 μ‚¬μš©ν•  수 μ—†λ‹€. ν•˜μ§€λ§Œ Enum νƒ€μž…μ€ 싱글톀을 보μž₯ν•œλ‹€. μ˜ˆμ‹œλ₯Ό ν†΅ν•΄μ„œ 보면 Enum을 비ꡐ할 λ•ŒλŠ” == μ‚¬μš©ν•˜λŠ” 것이 더 μ•ˆμ „ν•˜λ‹€κ³  μƒκ°ν•œλ‹€.

  • 동등성 λΉ„κ΅λŠ” 컴파일 νƒ€μž„μ— ν˜Έν™˜μ„± 검사λ₯Ό μ§€μ›ν•œλ‹€. 즉, 잘λͺ»λœ 비ꡐλ₯Ό ν•˜λ©΄ 컴파일 νƒ€μž„μ— κ²€μ‚¬λœλ‹€. ν•˜μ§€λ§Œ equals()λŠ” λ°”λ‘œ 컴파일 λœλ‹€.

값이 λ™μ μœΌλ‘œ λ³€ν™”κ°€ μ—†κ±°λ‚˜, μƒˆλ‘œμš΄ μƒμˆ˜κ°€ μΆ”κ°€κ°€ λ˜μ§€ μ•ŠλŠ” 경우라면 μƒμˆ˜λ₯Ό μ‚¬μš©ν•˜κ³  κ·Έ μ™Έμ—λŠ” enum으둜 κ΄€λ¦¬ν•˜λŠ” 것이 쒋은것 κ°™λ‹€.

Last updated