1. Enumμ΄λ?
Enum(μ΄κ±° νμ )μ λͺ κ°μ§ κ³ μ λ κ°μ κ°μ§λ λ°μ΄ν° νμ μΌλ‘, μΌλ°μ μΌλ‘ μμλ‘ μ¬μ©λ©λλ€. Javaμμ Enumμ μ΄κ±°νμ΄λΌκ³ λ λΆλ¦¬λ©°, CμΈμ΄μ μ΄κ±°νκ³Ό λΉμ·ν κ°λ μ λλ€. μ΄κ±° νμ μ μλ‘ κ΄λ ¨ μλ μμλ€μ κ·Έλ£Ήννμ¬ ννν μ μμΌλ©°, μ½λμ κ°λ μ±μ λμ΄κ³ μ€λ₯λ₯Ό μ€μ΄λλ° λμμ μ€λλ€.
Enumμ μ¬λ¬ μμλ€ μ€μμ νλμ κ°μ μ νν΄μΌ ν λ μ¬μ©λ©λλ€. μλ₯Ό λ€μ΄, μμΌμ νννλ κ²½μ° {μ, ν, μ, λͺ©, κΈ, ν , μΌ}κ³Ό κ°μ μμλ€μ EnumμΌλ‘ ννν μ μμ΅λλ€. Enumμ κ³ μ λ κ°λ€μ κ°μ§κ³ μκΈ° λλ¬Έμ μ€μλ‘ μλͺ»λ κ°μ΄ λ€μ΄μ€λ μν©μ λ°©μ§ν μ μμ΅λλ€.
Enumμ μλ° 1.5λΆν° λμ λμμΌλ©°, C#, Python, Kotlin λ±μ λ€λ₯Έ νλ‘κ·Έλλ° μΈμ΄μμλ λΉμ·ν κ°λ μΌλ‘ μ§μλ©λλ€. μ΄κ±° νμ μ νλ‘κ·Έλλ¨Έκ° μ½λλ₯Ό λμ± ν¨μ¨μ μ΄κ³ κ°λ μ± μκ² μμ±ν μ μλλ‘ λμμ£Όλ κ°λ ₯ν λꡬμ λλ€.
2. Enumμ μ μμ μ μΈ λ°©λ²
Enumμ μΌλ ¨μ μμλ€μ κ·Έλ£Ήννμ¬ νννλ λ°μ΄ν° νμ
μ
λλ€. Javaμμ Enumμ enum
ν€μλλ₯Ό μ¬μ©νμ¬ μ μλ©λλ€. Enumμ ν΄λμ€λ‘ μ μλκ³ , μ΄κ±°νμ κ°κ°μ μμλ ν΄λΉ Enum ν΄λμ€μ κ°μ²΄μ
λλ€.
Enumμ μ μνκΈ° μν΄ λ€μκ³Ό κ°μ νμμ μ¬μ©ν©λλ€.
enum EnumName {
CONSTANT1,
CONSTANT2,
CONSTANT3,
...
}
κ°κ°μ μμλ μ½€λ§λ‘ ꡬλΆλ ννλ‘ μ΄κ±°λ©λλ€. μμλ λλ¬Έμλ‘ μμ±λκ³ , μΈλ―Έμ½λ‘ μΌλ‘ μ’ λ£λ©λλ€. Enumμ ν΄λμ€λ‘μ λ΄λΆμ μΌλ‘ μμ±μ, λ©μλ λ° νλλ₯Ό κ°μ§ μ μμ΅λλ€.
μλ₯Ό λ€μ΄, μμΌμ νννλ Enumμ μ μν΄ λ³΄κ² μ΅λλ€.
enum Day {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
μμ μ½λμμ Dayλ Enumμ μ΄λ¦μ΄κ³ , κ°κ°μ μμλ ν΄λΉ κ°μ²΄μ μ΄λ¦μ λλ€. Day Enumμ κ·Έ μμ²΄λ‘ νλμ νμ μ΄ λλ©°, Day.MONDAYμ κ°μ ννλ‘ μμμ μ κ·Όν μ μμ΅λλ€. μ΄λ κ² Enumμ μ¬μ©νλ©΄ λ³μμ μλͺ»λ κ°μ΄ λ€μ΄μ€λ κ²μ λ°©μ§νκ³ , κ°λ μ±μ΄ μ’μ μ½λλ₯Ό μμ±ν μ μμ΅λλ€.
3. Enumμ νμ© μμ
Enumμ λ€μν μν©μμ μ μ©νκ² νμ©λ μ μμ΅λλ€. λͺ κ°μ§ Enumμ νμ© μμ λ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
μμ 1: μμΌ νν
μ΄μ μ μΈκΈν μμΌμ νννλ Enumμ μλ‘ λ€κ² μ΅λλ€. Day Enumμ μμΌμ λνλ΄λ μμλ€μ κ°κ³ μμ΅λλ€. μ΄λ₯Ό νμ©νμ¬ λ€μκ³Ό κ°μ μμ μ μνν μ μμ΅λλ€.
public class Main {
public static void main(String[] args) {
Day today = Day.MONDAY;
System.out.println("μ€λμ " + today + "μ
λλ€.");
if (today == Day.SATURDAY || today == Day.SUNDAY) {
System.out.println("μ£Όλ§μ
λλ€.");
} else {
System.out.println("νμΌμ
λλ€.");
}
}
}
μμ μ½λλ νμ¬ μμΌμ λνλ΄λ λ³μ today
λ₯Ό μ μΈνκ³ , κ·Έ κ°μ μΆλ ₯νλ μμ μ
λλ€. λν, μ£Όλ§μΈμ§ νμΌμΈμ§λ₯Ό νλ³νμ¬ μΆλ ₯ν©λλ€.
μμ 2: κ³μ νν
Enumμ κ³μ μ λνλ΄λλ°μλ μ¬μ©ν μ μμ΅λλ€. λ€μμ κ³μ μ λνλ΄λ Enumμ μμ μ λλ€.
enum Season {
SPRING,
SUMMER,
AUTUMN,
WINTER
}
μμ Season Enumμ μ¬μ©νμ¬ κ³μ μ λ°λΌ νΉμ ν λμμ μννλ μμ λ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
public class Main {
public static void main(String[] args) {
Season currentSeason = Season.SPRING;
switch (currentSeason) {
case SPRING:
System.out.println("λ΄μ
λλ€.");
break;
case SUMMER:
System.out.println("μ¬λ¦μ
λλ€.");
break;
case AUTUMN:
System.out.println("κ°μμ
λλ€.");
break;
case WINTER:
System.out.println("겨μΈμ
λλ€.");
break;
}
}
}
μμ μ½λλ νμ¬ κ³μ μ λνλ΄λ λ³μ currentSeason
μ μ μΈνκ³ , ν΄λΉ κ³μ μ λ§λ 문ꡬλ₯Ό μΆλ ₯νλ μμ μ
λλ€. Enumμ μ¬μ©νλ©΄ switchλ¬Έμ΄λ ifλ¬Έμ μ¬μ©νμ¬ κ°κ²°νκ² κ³μ μ μ²λ¦¬ν μ μμ΅λλ€.
Enumμ μμ μμ μΈμλ λ€μν μν©μμ νμ©λ μ μμ΅λλ€. μλ₯Ό λ€μ΄, μ£Όμμ§λ₯Ό νννλ Enum, μν μ½λλ₯Ό νννλ Enum λ±μΌλ‘ νμ©ν μ μμ΅λλ€. Enumμ μ¬μ©νμ¬ μ½λλ₯Ό ꡬ쑰ννκ³ κ°λ μ±μ λμΌ μ μμΌλ©°, μλͺ»λ κ°μ΄ λ€μ΄μ€λ μν©μ λ°©μ§ν μ μμ΅λλ€.
4. Enumμ μ₯μ κ³Ό νμ© κ°μΉ
Enumμ λ€μκ³Ό κ°μ λͺ κ°μ§ μ₯μ κ³Ό νμ© κ°μΉλ₯Ό κ°μ§κ³ μμ΅λλ€.
4.1 νμ μμ μ±(Type Safety)
Enumμ μ»΄νμΌ μμ μμ νμ μμ μ±μ 보μ₯ν©λλ€. Enumμ μ¬μ©νμ¬ λ³μλ₯Ό μ μΈνλ©΄, ν΄λΉ λ³μλ Enumμ μμ μ€ νλμ κ°μ κ°μ ΈμΌ ν©λλ€. μ΄λ μλͺ»λ κ°μ΄λ λ€λ₯Έ νμ μ κ°μ΄ λ³μμ ν λΉλλ κ²μ λ°©μ§ν©λλ€. μ΄λ¬ν νμ μμ μ±μ μ½λμ μ€λ₯λ₯Ό μ€μ΄κ³ λλ²κΉ μ μ©μ΄νκ² ν©λλ€.
4.2 μ½κΈ° μ¬μ΄ μ½λ
Enumμ μ¬μ©νλ©΄ μ½λμ κ°λ μ±μ λμΌ μ μμ΅λλ€. Enumμ μλ―Έ μλ μ΄λ¦μ κ°μ§ μμλ€μ μ§ν©μ νννλ―λ‘, μ½λλ₯Ό μ½λ λ μκ° ν΄λΉ κ°μ μ΄ν΄νκΈ° μ½μ΅λλ€. μμμ μλ―Έκ° λͺ ννκ² ννλκΈ° λλ¬Έμ, μ½λμ λͺ©μ μ νμ νκΈ° μ¬μμ§λλ€.
4.3 μ½λμ ꡬ쑰ν
Enumμ μ¬μ©νλ©΄ μ½λλ₯Ό ꡬ쑰ννμ¬ λμ± κ°κ²°νκ³ μ μ§λ³΄μνκΈ° μ½κ² λ§λ€ μ μμ΅λλ€. Enumμ κ΄λ ¨λ μμλ€μ κ·Έλ£Ήνλ₯Ό ν΅ν΄ μλ―Έ μλ μ½λ λΈλ‘μ νμ±ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, μμΌμ λνλ΄λ Enumμ μ¬μ©νλ©΄, μμΌμ κ΄λ ¨λ λ‘μ§λ€μ ν΅ν©νμ¬ μ²λ¦¬ν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ μ€λ³΅ μ½λλ₯Ό μ€μ΄κ³ μΌκ΄μ± μλ μ½λ μμ±μ λλͺ¨ν μ μμ΅λλ€.
4.4 μλͺ»λ κ°μ λ°©μ§
Enumμ μ¬μ©νλ©΄ μλͺ»λ κ°μ΄ λ³μμ ν λΉλλ κ²μ λ°©μ§ν μ μμ΅λλ€. Enum μμ μ΄μΈμ κ°μ λ³μμ ν λΉνλ €κ³ μλν κ²½μ°, μ»΄νμΌ μ€λ₯κ° λ°μν©λλ€. μ΄λ κ°λ°μκ° μ¬λ°λ₯Έ κ°λ§ ν λΉνλλ‘ μ λνμ¬ νλ‘κ·Έλ¨μ μμ μ±μ λμ λλ€.
4.5 μ½λμ μ μ°μ±
Enumμ λ΄λΆμ μΌλ‘ μμ±μ, λ©μλ λ° νλλ₯Ό κ°μ§ μ μμ΅λλ€. μ΄λ₯Ό μ¬μ©νμ¬ κ°κ°μ μμκ° νΉμ ν λμμ μννλλ‘ κ΅¬νν μ μμ΅λλ€. Enumμ μ±κΈν€ ν¨ν΄μ μ μ©νκΈ°μλ μ©μ΄νλ©°, νμμ λ°λΌ Enumμ λ©μλλ₯Ό μ¬μ μνμ¬ λ€μν λμμ ꡬνν μ μμ΅λλ€.
Enumμ μμ μ₯μ κ³Ό νμ© κ°μΉλ₯Ό ν΅ν΄ νλ‘κ·Έλ¨μ μμ μ±, κ°λ μ±, ꡬ쑰ν, μ μ°μ± λ±μ ν₯μμν€λλ° λμμ μ€λλ€. μ΄λ¬ν μ΄μ λ‘ Enumμ Javaμμ λ리 μ¬μ©λλ λ°μ΄ν° νμ μ€ νλμ λλ€.
5. Enumκ³Ό κ΄λ ¨λ μ£Όμμ¬νκ³Ό νκ³
Enumμ μ¬μ©ν λ μ£Όμν΄μΌ ν λͺ κ°μ§ μ¬νκ³Ό νκ³κ° μμ΅λλ€.
5.1 κ΄λ ¨ μλ κ°μ μ ν
Enumμ κ΄λ ¨ μλ μμλ€μ μ§ν©μ νννκΈ° μν μ©λλ‘ μ¬μ©λμ΄μΌ ν©λλ€. λ°λΌμ, λΉμ·ν νΉμ±μ κ°μ§μ§λ§ μ€μ λ‘ μλ‘ λ€λ₯Έ κ²μ λνλ΄λ κ°λ€μ EnumμΌλ‘ μ μνμ§ μμμΌ ν©λλ€. μλ₯Ό λ€μ΄, μ±λ³μ λνλ΄λ κ²½μ° "λ¨μ"μ "μ¬μ"λ EnumμΌλ‘ μ μν μ μμ§λ§, "κΈ°ν"μ κ°μ κ°μ Enumμ ν¬ν¨μν€λ©΄ λΆμ μ ν μ¬μ©μ λλ€. μ΄λ¬ν κ²½μ° μμ ν΄λμ€μ νμ ν΄λμ€λ₯Ό μ¬μ©νλ κ²μ΄ μ ν©ν©λλ€.
5.2 μ΄κ±°ν μμμ λ³κ²½ λΆκ°
Enumμ μμλ ν λ² μ μλλ©΄ λ³κ²½ν μ μμ΅λλ€. μ¦, Enumμ κ°μ λμ μΌλ‘ λ³κ²½ν μ μμ΅λλ€. Enumμ΄ μμ κ°μ λ³κ²½ν΄μΌ νλ κ²½μ° μΈμ΄ μμ€μμλ μ§μνμ§ μμΌλ―λ‘, λ€λ₯Έ μ€κ³ λ°©μμ κ³ λ €ν΄μΌ ν©λλ€.
5.3 μμμ νκ³
Enumμ μμμ μμλ₯Ό κ°μ§ μ μμ§λ§, μμλ₯Ό κΈ°μ€μΌλ‘ Enumμ λΉκ΅νλ κ²μ κΆμ₯λμ§ μμ΅λλ€. Enum μμλ₯Ό λΉκ΅ν λλ ==
μ°μ°μλ₯Ό μ¬μ©νλ κ²μ΄ μ’μ΅λλ€. λν, Enum μμμ μμλ₯Ό μ¬μ©νλ κ²½μ° Enum ν΄λμ€μμ μ 곡νλ ordinal()
λ©μλλ₯Ό μ¬μ©ν΄μΌ ν©λλ€.
5.4 λ©λͺ¨λ¦¬ μ¬μ©λ
Enumμ ν΄λμ€μ΄λ―λ‘, Enum μμλ₯Ό μ¬μ©ν λλ§λ€ ν΄λΉ Enum ν΄λμ€μ μΈμ€ν΄μ€κ° μμ±λ©λλ€. λ°λΌμ, Enum λ΄μ λ§μ μμκ° μλ κ²½μ° λ©λͺ¨λ¦¬ μ¬μ©λμ΄ μ¦κ°ν μ μμ΅λλ€. μ΄λ νΉν Enumμ μμκ° μ¬μ©λλ κ³³μμ μ€μν κ²½μ°μ λλ€.
5.5 Serializationκ³Όμ νΈνμ±
Enumμ Serializationνκ³ Deserializationνλ κ²½μ° μ£Όμν΄μΌ ν©λλ€. Javaμ κΈ°λ³Έ Serializationμ Enumμ μμ μ΄λ¦μ κΈ°λ°μΌλ‘ μ§λ ¬ννλ―λ‘, Enum ν΄λμ€μ μμ μ μμ μμλ₯Ό λ³κ²½νκ±°λ μμλ₯Ό μ κ±°νκ±°λ μμ νλ λ±μ λ³κ²½μ μ£Όμν΄μΌ ν©λλ€.
Enumμ κ°λ ₯ν κΈ°λ₯κ³Ό μ₯μ μ κ°μ§κ³ μμ§λ§, μμ μ£Όμμ¬νκ³Ό νκ³λ₯Ό μκ³ μ¬μ©ν΄μΌ ν©λλ€. μ΄λ₯Ό ν΅ν΄ Enumμ μ¬λ°λ₯΄κ² νμ©ν μ μμΌλ©°, Enumμ μ₯μ μ μ΅λν νμ©ν μ μμ΅λλ€.
Enumκ³Ό κ΄λ ¨λ μ£Όμμ¬νκ³Ό νκ³
κ΄λ ¨ μλ κ°μ μ ν
Enumμ κ΄λ ¨ μλ μμλ€μ μ§ν©μ νννκΈ° μν΄ μ¬μ©λμ΄μΌ ν©λλ€. λ°λΌμ, λΉμ·ν νΉμ±μ κ°μ§μ§λ§ μ€μ λ‘ μλ‘ λ€λ₯Έ κ²μ λνλ΄λ κ°λ€μ EnumμΌλ‘ μ μν΄μλ μ λ©λλ€. μλ₯Ό λ€μ΄, μ±λ³μ λνλ΄λ κ²½μ° "λ¨μ"μ "μ¬μ"λ EnumμΌλ‘ μ μν μ μμ§λ§, "κΈ°ν"μ κ°μ κ°μ Enumμ ν¬ν¨μν€λ κ²μ λΆμ μ ν©λλ€. μ΄λ¬ν κ²½μ°μλ μμ ν΄λμ€μ νμ ν΄λμ€λ₯Ό μ¬μ©νμ¬ κ°μ νννλ κ²μ΄ μ’μ΅λλ€.
μ΄κ±°ν μμμ λ³κ²½ λΆκ°
Enumμ μμλ ν λ² μ μλλ©΄ λ³κ²½ν μ μμ΅λλ€. μ¦, Enumμ κ°μ λμ μΌλ‘ λ³κ²½ν μ μμ΅λλ€. λ§μ½ Enumμ μμ κ°μ λ³κ²½ν΄μΌ νλ€λ©΄, λ€λ₯Έ μ€κ³ λ°©μμ κ³ λ €ν΄μΌ ν©λλ€. μλ₯Ό λ€μ΄, Enum μΈλΆμμ κ°μ μ μ₯νκ³ νμμ λ°λΌ κ°μ μ κ·Όνμ¬ λΉμ·ν ν¨κ³Όλ₯Ό λΌ μ μμ΅λλ€.
μμμ νκ³
Enumμ μμμ μμλ₯Ό κ°μ§ μ μμ§λ§, μμλ₯Ό κΈ°μ€μΌλ‘ Enumμ λΉκ΅νλ κ²μ μ’μ§ μμ΅λλ€. Enum μμλ₯Ό λΉκ΅ν λλ ==
μ°μ°μλ₯Ό μ¬μ©νλ κ²μ΄ μ’μ΅λλ€. λν, Enum μμμ μμλ₯Ό μ¬μ©νλ κ²½μ° Enum ν΄λμ€μμ μ 곡νλ ordinal()
λ©μλλ₯Ό μ¬μ©ν΄μΌ ν©λλ€. ordinal()
λ©μλλ ν΄λΉ Enum μμμ μμλ₯Ό λ°νν©λλ€.
λ©λͺ¨λ¦¬ μ¬μ©λ
Enumμ ν΄λμ€μ΄λ―λ‘, Enum μμλ₯Ό μ¬μ©ν λλ§λ€ ν΄λΉ Enum ν΄λμ€μ μΈμ€ν΄μ€κ° μμ±λ©λλ€. λ°λΌμ, Enum λ΄μ λ§μ μμκ° μλ κ²½μ° λ©λͺ¨λ¦¬ μ¬μ©λμ΄ μ¦κ°ν μ μμ΅λλ€. μ΄λ¬ν κ²½μ°μλ Enum μμ μ체 λμ , Enum μμμ κ°λ§ νμν κ²½μ°λ Enum ν΄λμ€μ νμμ±μ΄ μλ κ²½μ° μΌλ° μμ κ°μ μ¬μ©νλ κ²μ΄ λ ν¨μ¨μ μ λλ€.
Serializationκ³Όμ νΈνμ±
Enumμ Serializationνκ³ Deserializationνλ κ²½μ° μ£Όμν΄μΌ ν©λλ€. Javaμ κΈ°λ³Έ Serializationμ Enumμ μμ μ΄λ¦μ κΈ°λ°μΌλ‘ μ§λ ¬ννλ―λ‘, Enum ν΄λμ€μ μμ μ μμ μμλ₯Ό λ³κ²½νκ±°λ μμλ₯Ό μ κ±°νκ±°λ μμ νλ λ±μ λ³κ²½μ μ£Όμν΄μΌ ν©λλ€. λ³κ²½λ Enum ν΄λμ€λ₯Ό μ¬μ©νμ¬ μ΄μ μ μ§λ ¬νλ λ°μ΄ν°λ₯Ό μμ§λ ¬ννλ©΄ μμΈκ° λ°μν μ μμ΅λλ€. μ΄λ° κ²½μ°μλ μ§λ ¬νμ κ΄λ ¨λ λ©μ»€λμ¦μ μ¬μ©μ μ μν΄μΌ ν©λλ€.
Enumμ λ§μ μ₯μ κ³Ό κΈ°λ₯μ κ°μ§κ³ μμ§λ§, μ£Όμμ¬νκ³Ό νκ³λ₯Ό μΈμ§νκ³ μ¬μ©ν΄μΌ ν©λλ€. μ΄λ₯Ό ν΅ν΄ Enumμ μ¬λ°λ₯΄κ² νμ©νμ¬ μ½λλ₯Ό ν¨μ¨μ μ΄κ³ μμ μ μΌλ‘ μμ±ν μ μμ΅λλ€.
Enumμ΄λ?
Enumμ "μ΄κ±°ν"μ΄λΌλ μλ―Έλ‘, 미리 μ μλ μμ κ°λ€μ μ§ν©μ λνλ΄λ μλ£νμ λλ€. Javaμμ Enumμ Java 5λΆν° λμ λμμΌλ©°, μ΄κ±°ν μμμ κ°λ€μ μ μν νμλ μ΄ κ°λ€μ νλ‘κ·Έλ¨μ μ¬λ¬ λΆλΆμμ μ°Έμ‘°νκ³ μ¬μ©ν μ μμ΅λλ€.
Enumμ μΌλ ¨μ μμλ€μ μ μΈνκ³ μ΄λ₯Ό μ΄λ¦μΌλ‘ μλ³νλ λ° μ¬μ©λλ©°, μ΄λ₯Ό ν΅ν΄ κ°λ
μ±μ΄ λκ³ μ μ§ λ³΄μνκΈ° μ¬μ΄ μ½λλ₯Ό μμ±ν μ μμ΅λλ€. Javaμμλ Enumμ μ μνκΈ° μν΄ enum
ν€μλλ₯Ό μ¬μ©νλ©°, Enum ν΄λμ€λ₯Ό λͺ
μμ μΌλ‘ μμλ°κ² λ©λλ€.
Enumμ μμ κ°λ€μ μ§ν©μ΄λ―λ‘, μΌλ°μ μΌλ‘ μ νν κ°μμ κ°μΌλ‘ ꡬμ±λ©λλ€. μλ₯Ό λ€μ΄, μμΌμ νννλ κ²½μ°μλ "μμμΌ", "νμμΌ"κ³Ό κ°μ κ°μ EnumμΌλ‘ μ μν μ μμ΅λλ€. Enumμ μ¬μ©νλ©΄ μ΄λ¬ν κ°λ€μ λͺ μμ μΌλ‘ μ μνκ³ , μλͺ»λ κ°μ μ λ ₯νκ±°λ λΉκ΅νλ μ€λ₯λ₯Ό λ°©μ§ν μ μμ΅λλ€.
Enumμ μμμ μ΄λ¦κ³Ό κ°μ μμΌλ‘ κ°μ§λ©°, μ΄ κ°μ μ¬μ©νμ¬ Enum μμλ₯Ό μ°Έμ‘°ν μ μμ΅λλ€. Enum μμλ κ°κ° κ³ μ ν κ°κ³Ό μμλ₯Ό κ°μ§λ©°, μ΄λ₯Ό ν΅ν΄ Enum μμμ λΉκ΅μ μνλ₯Ό νΈλ¦¬νκ² ν μ μμ΅λλ€. λν, Enumμ switch λ¬Έκ³Ό ν¨κ» μ¬μ©νμ¬ κ°λ ₯ν μ μ΄ νλ¦μ μμ±νλ λ° μ μ©ν©λλ€.
Javaμ Enumμ νμ μμ μ±μ μ 곡νλ―λ‘, μ»΄νμΌ μκ°μ μλͺ»λ Enum κ°μ μ¬μ©μ λ°©μ§ν μ μμ΅λλ€. Enumμ μμ κ°λ€μ μ§ν©μ λͺ ννκ² μ μνκ³ κ΄λ¦¬ν μ μμΌλ―λ‘, μ½λμ κ°λ μ±κ³Ό μμ μ±μ λμ¬μ£Όλ ν¨κ³Όμ μΈ λꡬμ λλ€.
μ΄μ²λΌ Enumμ Javaμμ μμ κ°λ€μ μ§ν©μ λνλ΄κΈ° μν κ°λ ₯νκ³ νΈλ¦¬ν μλ£νμ΄λ©°, μ½λμ κ°λ μ±κ³Ό μ μ§ λ³΄μμ±μ ν₯μμμΌμ£Όλ μ€μν μμμ λλ€.
Enumμ μ μΈ λ°©λ²
Javaμμ Enumμ μ μΈνκΈ° μν΄μλ enum
ν€μλλ₯Ό μ¬μ©ν©λλ€. Enumμ ν΄λμ€μ΄λ―λ‘, μΌλ°μ μΈ ν΄λμ€ ννλ‘ μ μλ©λλ€. Enum ν΄λμ€λ μ΄κ±°ν μμμ μ§ν©μ λνλ΄λ©°, κ° μμλ Enum ν΄λμ€μ μΈμ€ν΄μ€λ‘ ννλ©λλ€.
Enumμ μ μΈνλ λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€:
enum EnumName {
CONSTANT1,
CONSTANT2,
CONSTANT3,
// ...
}
enum
ν€μλ λ€μμλ Enumμ μ΄λ¦μ μ§μ ν©λλ€. μ΄λ¦μ κ΄λ‘μ μΌλ‘ 첫 κΈμκ° λλ¬Έμμ΄λ©°, λ¨μνμΌλ‘ μμ±ν©λλ€.- μ€κ΄νΈ
{}
λ΄λΆμλ Enum μμλ€μ μ μΈν©λλ€. κ° μμλ μ½€λ§λ‘ ꡬλΆλλ©°, λͺ μμ μΌλ‘ λλ¬Έμλ‘ μμ±ν©λλ€.
Enum μμμ μ΄λ¦μ μΌλ°μ μΌλ‘ λλ¬Έμλ‘ μμ±λλ©°, μ¬λ¬ λ¨μ΄λ‘ μ΄λ£¨μ΄μ§ κ²½μ°μλ λ°μ€(_
)λ‘ λ¨μ΄λ₯Ό ꡬλΆν©λλ€. μ΄λ μμμ κ°λ
μ±μ λμ¬μ£Όλ κ΄λ‘μ
λλ€.
Enum ν΄λμ€μλ κΈ°λ³Έμ μΌλ‘ λͺ κ°μ§ λ©μλκ° μ΄λ―Έ μ μλμ΄ μμ΅λλ€. κ° Enum μμλ Enum ν΄λμ€μ μΈμ€ν΄μ€μ΄λ―λ‘, Enum ν΄λμ€μμ μ μλ λ©μλλ₯Ό μ¬μ©ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, name()
λ©μλλ Enum μμμ μ΄λ¦μ λ¬Έμμ΄λ‘ λ°ννκ³ , ordinal()
λ©μλλ Enum μμμ μμ(0λΆν° μμ)λ₯Ό λ°νν©λλ€.
Enumμ μ¬μ©νλ μμλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€:
enum Day {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
public class Main {
public static void main(String[] args) {
Day today = Day.SUNDAY;
System.out.println("Today is " + today); // μΆλ ₯: Today is SUNDAY
}
}
μμ μμμμλ Day
Enumμ μ μνκ³ , today
λ³μμ Day.SUNDAY
κ°μ ν λΉνμ¬ μ¬μ©ν©λλ€. Enum μμλ EnumName.CONSTANT
νμμΌλ‘ μ°Έμ‘°λλ©°, λ¬Έμμ΄λ‘ λ³νλ λ μμμ μ΄λ¦μ΄ μΆλ ₯λ©λλ€.
μ΄μ²λΌ Enumμ μ μΈνκ³ μ¬μ©νλ©΄, μ½λμ κ°λ μ±μ λμ΄κ³ μ€λ₯λ₯Ό λ°©μ§ν μ μμΌλ©°, μ μ§ λ³΄μμ±μ ν₯μμν¬ μ μμ΅λλ€.
Enumμ νμ© μμ
Enumμ μμ κ°λ€μ μ§ν©μ λνλ΄λ μλ£νμΌλ‘, λ€μν μν©μμ νμ©λ μ μμ΅λλ€. Enumμ νμ© μμ λ₯Ό μ΄ν΄λ³΄λ©΄μ, Enumμ΄ μ΄λ»κ² μ μ©νκ² μ¬μ©λ μ μλμ§ μμλ³΄κ² μ΅λλ€.
1. μμΌ μμ
κ°μ₯ μΌλ°μ μΈ Enumμ νμ© μμ λ‘λ μμΌμ νννλ κ²½μ°κ° μμ΅λλ€. λ€μμ μμΌμ λνλ΄λ EnumμΈ Day
μ μμ μ
λλ€:
enum Day {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
public class Main {
public static void main(String[] args) {
Day today = Day.MONDAY;
if (today == Day.SATURDAY || today == Day.SUNDAY) {
System.out.println("It's weekend!");
} else {
System.out.println("It's weekday!");
}
}
}
μμ μμ μμλ Day
Enumμ μ¬μ©νμ¬ μ€λμ΄ μ£Όλ§μΈμ§ μλμ§λ₯Ό νμΈνλ μ½λλ₯Ό μμ±ν©λλ€. Enumμ μ¬μ©νλ©΄ ifλ¬Έμμ μμΌμ λΉκ΅ν λ μΌμΌν λ¬Έμμ΄ κ°μ λΉκ΅νλ κ² λμ , Enum μμμ κ°μ λΉκ΅νμ¬ κ°λ
μ±μ΄ λμμ§λλ€.
2. κ³μ μμ
Enumμ μνμ κΈ°λ₯μ ν¨κ» μ μν μλ μμ΅λλ€. κ³μ μ νννλ EnumμΈ Season
μ μμ λ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€:
enum Season {
SPRING("March", "April", "May"),
SUMMER("June", "July", "August"),
AUTUMN("September", "October", "November"),
WINTER("December", "January", "February");
private final String[] months;
Season(String... months) {
this.months = months;
}
public String[] getMonths() {
return months;
}
}
public class Main {
public static void main(String[] args) {
Season currentSeason = Season.SUMMER;
System.out.println("The current season is " + currentSeason);
System.out.println("The months in this season are: " + Arrays.toString(currentSeason.getMonths()));
}
}
μμ μμ μμλ Season
Enumμ μ¬μ©νμ¬ νμ¬ κ³μ κ³Ό κ·Έμ ν΄λΉνλ μμ μΆλ ₯νλ μ½λλ₯Ό μμ±ν©λλ€. κ° κ³μ μ ν΄λΉνλ μλ€μ κ°μ§κ³ μκ³ , getMonths()
λ©μλλ₯Ό ν΅ν΄ μλ€μ κ°μ Έμ¬ μ μμ΅λλ€. Enumμ μμ κ°λ€κ³Ό ν¨κ» λ°μ΄ν°λ₯Ό κ°μ§ μ μμΌλ©°, μ΄λ₯Ό νμ©νμ¬ λ³΅μ‘ν λ°μ΄ν°μ κΈ°λ₯μ μ°κ²°ν μ μμ΅λλ€.
3. μ£Όλ¬Έ μν μμ
μνλ₯Ό νννλ Enumμ μ£Όλ¬Έ μνμ κ°μ κ³³μμ λ§μ΄ μ¬μ©λ©λλ€. λ€μμ μ£Όλ¬Έμ μνλ₯Ό λνλ΄λ EnumμΈ OrderStatus
μ μμ μ
λλ€:
enum OrderStatus {
PENDING("Pending"),
CONFIRMED("Confirmed"),
SHIPPED("Shipped"),
DELIVERED("Delivered"),
CANCELLED("Cancelled");
private final String displayText;
OrderStatus(String displayText) {
this.displayText = displayText;
}
public String getDisplayText() {
return displayText;
}
}
public class Main {
public static void main(String[] args) {
OrderStatus orderStatus = OrderStatus.CONFIRMED;
System.out.println("The order status is " + orderStatus.getDisplayText());
}
}
μμ μμ μμλ OrderStatus
Enumμ μ¬μ©νμ¬ μ£Όλ¬Έμ μνλ₯Ό νννκ³ , getDisplayText()
λ©μλλ₯Ό ν΅ν΄ μνμ νμ λ¬Έμμ΄μ κ°μ Έμ΅λλ€. Enumμ μ¬μ©νλ©΄ μ£Όλ¬Έμ μνλ₯Ό μΌμΌν λ¬Έμμ΄λ‘ λΉκ΅νλ κ² λμ κ°λ
μ±μ΄ λμ μ½λλ₯Ό μμ±ν μ μμ΅λλ€.
μ΄μ²λΌ Enumμ λ€μν μν©μμ μ μ©νκ² νμ©λ μ μμΌλ©°, μ½λμ κ°λ μ±κ³Ό μ μ§ λ³΄μμ±μ ν₯μμν€λλ° λμμ μ€λλ€. Enumμ μ μ νκ² νμ©νμ¬ μ½λλ₯Ό μμ±νλ©΄, μ€λ₯λ₯Ό λ°©μ§νκ³ μ§κ΄μ μ΄κ³ μμ μ μΈ νλ‘κ·Έλ¨μ κ°λ°ν μ μμ΅λλ€.
Enumμ μ₯μ κ³Ό νμ© κ°μΉ
Enumμ μμ κ°λ€μ μ§ν©μ λνλ΄λ μλ£νμΌλ‘, λ€μν μν©μμ νμ©λ μ μμ΅λλ€. Enumμ μ₯μ κ³Ό νμ© κ°μΉμ λν΄ μ΄ν΄λ³΄λ©΄μ, Enumμ΄ μ΄λ»κ² μ μ©νκ³ κ°μΉμκ² μ¬μ©λ μ μλμ§ μμλ³΄κ² μ΅λλ€.
1. μ½λ κ°λ μ± ν₯μ
Enumμ κ°λ
μ±μ ν₯μμν€λ λ° ν° λμμ μ€λλ€. Enumμ μμ μ§ν©μ μ μνμ¬ μ½λμμ μ¬μ©ν λ, ν΄λΉ μμλ€μ κ°λ
μ± μλ μ΄λ¦μΌλ‘ μ°Έμ‘°ν μ μμ΅λλ€. μ΄λ μ½λλ₯Ό μ½κ±°λ μ μ§λ³΄μν λ νΌλμ μ€μ¬μ£Όκ³ , μ½λμ μλλ₯Ό λͺ
ννκ² μ λ¬ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, enum Day { MONDAY, TUESDAY, ... }
μ κ°μ΄ μμΌμ νννλ Enumμ μ¬μ©νλ κ²μ String
νΉμ int
λ³μλ₯Ό μ¬μ©νλ κ²λ³΄λ€ μ’μ κ°λ
μ±μ μ 곡ν©λλ€.
2. νμ μμ μ± λ³΄μ₯
Enumμ μ»΄νμΌλ¬κ° νμ μμ μ±μ κ²μ¬ν μ μλλ‘ λμμ€λλ€. Enumμ μ¬μ μ μ μλ μμ κ°λ€μ μ§ν©μΌλ‘ μ΄λ£¨μ΄μ Έ μμ΄, μλͺ»λ κ°μ΄λ μ€νλ‘ μΈν μ€λ₯λ₯Ό λ°©μ§νλ λ° λμμ μ€λλ€. μ»΄νμΌ μμ μ μλͺ»λ κ°μ μ¬μ©νλ μ€λ₯λ₯Ό μ‘μλ΄λ―λ‘, λ°νμμ λ°μν μ μλ μ€λ₯λ₯Ό μ¬μ μ λ°©μ§ν μ μμ΅λλ€.
3. μ½λ κ²°ν©μ± ν₯μ
Enumμ κ΄λ ¨λ μμ κ°λ€μ λ Όλ¦¬μ μΌλ‘ κ·Έλ£Ήνν μ μμ΄, μ½λμ κ²°ν©μ±μ ν₯μμν΅λλ€. Enumμ κ° μμ κ°μ κ³ μ ν κΈ°λ₯μ΄λ μμ±μ μΆκ°ν μ μμ΄, κ΄λ ¨λ λμμ νλμ κ°μ²΄λ‘ λ¬Άμ μ μμ΅λλ€. μ΄λ μ½λλ₯Ό λ κ°κ²°νκ³ λͺ¨λνλ κ΅¬μ‘°λ‘ λ§λ€μ΄μ€λλ€. μλ₯Ό λ€μ΄, μ£Όλ¬Έ μν(Enum)μ ν΄λΉ μνμ λ°λ₯Έ λμλ€μ μ°κ²°νμ¬ μ½λμ μΌκ΄μ±μ μ μ§ν μ μμ΅λλ€.
4. νμ₯μ±κ³Ό μ μ°μ± μ 곡
Enumμ νμμ λ°λΌ νμ₯μ΄ κ°λ₯νκ³ λ³κ²½μ΄ μ©μ΄ν©λλ€. μλ‘μ΄ κ°μ μΆκ°νκ±°λ κΈ°μ‘΄ κ°μ μμ ν λ, Enumμ μμ νλ κ²λ§μΌλ‘ μΆ©λΆν©λλ€. μ΄λ λ€λ₯Έ ν΄λμ€λ λ©μλμμ Enumμ μ¬μ©νκ³ μλ κ²½μ°μλ μμ ν΄μΌ νλ λ²κ±°λ‘μμ μ€μ¬μ€λλ€. λν Enumμ μΈν°νμ΄μ€λ₯Ό ꡬνν μ μμΌλ―λ‘, λ€νμ±κ³Ό ν¨κ» νμ₯μ±κ³Ό μ μ°μ±μ μ 곡ν©λλ€.
5. μ νν κ°μ 보μ₯
Enumμ 미리 μ μλ μμ κ°μ μ¬μ©νλ―λ‘, νλ‘κ·Έλλ¨Έκ° μ€μλ‘ μλͺ»λ κ°μ ν λΉνλ μ€λ₯λ₯Ό μ€μ¬μ€λλ€. Enumμ μ¬μ©νλ©΄ μμμΉ λͺ»ν κ°μ΄λ λΆμμ©μ΄ λ°μν κ°λ₯μ±μ λν μ€μΌ μ μμΌλ©°, μ½λμ λ‘μ§κ³Ό μΌκ΄λ κ°μ μ¬μ©ν μ μμ΅λλ€.
μ΄μ²λΌ Enumμ μ½λμ κ°λ μ±μ ν₯μμν€κ³ , νμ μμ μ±μ 보μ₯νλ©°, κ²°ν©μ±μ ν₯μμν€κ³ , νμ₯μ±κ³Ό μ μ°μ±μ μ 곡νλ©°, μ νν κ°μ 보μ₯νλ λ± λ€μν μ₯μ κ³Ό νμ© κ°μΉλ₯Ό κ°μ§κ³ μμ΅λλ€. Enumμ μ½λ μμ± λ° μ μ§λ³΄μμ ν¨μ¨μ±μ λμ΄λλ° μ μ©νλ©°, 볡μ‘ν μμ κ°κ³Ό κ΄λ ¨λ λ‘μ§μ λ³΄λ€ κ°κ²°νκ³ κ΄λ¦¬νκΈ° μ½κ² λ§λ€μ΄μ€λλ€.
Enumμ νκ³μ μ£Όμμ¬ν
Enumμ λ§μ μ₯μ κ³Ό νμ© κ°μΉλ₯Ό κ°μ§κ³ μμ§λ§, λͺ κ°μ§ νκ³μ μ£Όμμ¬νλ κ³ λ €ν΄μΌ ν©λλ€. μ΄μ λν΄ μμΈν μμλ³΄κ² μ΅λλ€.
1. νμ₯μ΄ μ νμ
Enumμ μ¬μ μ μ μλ μμ κ°λ€μ μ§ν©μΌλ‘ ꡬμ±λμ΄ νμ₯μ΄ μ νμ μ λλ€. Enumμ μμ μ§ν©μ μ μν ν, μ»΄νμΌ μμ μμ μ¬μ©ν κ°λ€μ λͺ¨λ μκ³ μμ΄μΌ ν©λλ€. λ°λΌμ Enumμ μλ‘μ΄ μμ κ°μ λμ μΌλ‘ μΆκ°νκ±°λ μμ νλ κ²μ λΆκ°λ₯ν©λλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄μλ Enum μ체λ₯Ό μμ ν΄μΌ ν©λλ€.
2. μΈλΆ λ°μ΄ν°μ μ²λ¦¬κ° μ νμ
Enumμ λ³΄ν΅ μμ κ°μ μ μ₯νκΈ° μν΄ μ¬μ©λκΈ° λλ¬Έμ, μΈλΆ λ°μ΄ν°μμ μνΈμμ©μ΄ μ νμ μ λλ€. Enumμ μμ κ°λ€μ΄ μ»΄νμΌ μμ μ κ²°μ λκΈ° λλ¬Έμ, λ°νμμμ κ°μ λμ μΌλ‘ μ½μ΄μ€κ±°λ κ³μ°νλ μμ μ ν μ μμ΅λλ€. μΈλΆ λ°μ΄ν°λ₯Ό Enumμ μ§μ μ μ₯ν μλ μμΌλ, Enumμ μμ κ°κ³Ό μΈλΆ λ°μ΄ν° κ°μ 맀νμ ꡬνν μ μμ΅λλ€.
3. κ³΅κ° μ μ κ° ν¬λ€
Enumμ μ¬λ¬ κ°μ μμ κ°μ κ°μ§ μ μμΌλ©°, μμ κ°λΉ λ©λͺ¨λ¦¬λ₯Ό μ°¨μ§νκ² λ©λλ€. λ°λΌμ μμ κ°μ κ°μκ° λ§μ κ²½μ° Enumμ λ§μ 곡κ°μ μ μ νκ² λ©λλ€. μ΄λ λ©λͺ¨λ¦¬ μ¬μ©λμ μ¦κ°μν¬ μ μμΌλ―λ‘, Enumμ μ¬μ©νκΈ° μ μ μμ κ°μ κ°μλ₯Ό κ³ λ €ν΄μΌ ν©λλ€.
4. μμ κ° μμ μ μ΄λ €μ
Enumμ λ€λ₯Έ ν΄λμ€μ λ§μ°¬κ°μ§λ‘ λ²μ κ΄λ¦¬ μμ€ν μμ λ³κ²½ λ΄μμ μΆμ νκ³ κ΄λ¦¬ν μ μμ΅λλ€. νμ§λ§ Enumμ μλ‘μ΄ μμ κ°μ μΆκ°νκ±°λ, κΈ°μ‘΄ μμ κ°μ μμ νλ κ²μ λΉκ΅μ μ΄λ €μ΄ μμ μΌ μ μμ΅λλ€. Enum κ°μ μμ νλ©΄ ν΄λΉ Enum κ°μ μ°Έμ‘°νλ μ½λμμ μΌλΆ μμ μ΄ νμν μ μμΌλ―λ‘, Enum κ°μ μμ ν λλ μ£Όμκ° νμν©λλ€.
5. μ§λ ¬νμ μ£Όμ
Enumμ μ§λ ¬νλλ©΄, Enum μμ κ°μ μ΄λ¦ μ체λ₯Ό μ μ₯νκ² λ©λλ€. λ°λΌμ Enumμ΄ μμ λμ΄ μμ κ°μ μ΄λ¦μ΄ λ³κ²½λ κ²½μ°, μ§λ ¬νλ κ°μ²΄λ₯Ό μμ§λ ¬νν λ μμΈκ° λ°μν μ μμ΅λλ€. μ΄λ° κ²½μ°μλ μμ§λ ¬ν μ κ°μ μ ννκ² μ²λ¦¬νκΈ° μν΄ μΆκ° μμ μ΄ νμν μ μμ΅λλ€.
Enumμ νκ³μ μ£Όμμ¬νμ κ³ λ €νλ©° νλ‘κ·Έλ¨μ κ°λ°νλ©΄, Enumμ μ₯μ μ μ΅λν νμ©νλ©΄μ λ¬Έμ λ₯Ό μλ°©ν μ μμ΅λλ€. κ°λ μ±κ³Ό μ μ§λ³΄μμ±μ ν₯μμν€κΈ° μν΄ Enumμ μ¬μ©ν λλ, μμ κ°μ κ°μ, λ³κ²½ κ°λ₯μ±, μΈλΆ λ°μ΄ν° μ°λ λ±μ κ³ λ €νμ¬ μ μ ν μ€κ³λ₯Ό μ§νν΄μΌ ν©λλ€.
λκΈ