Enum(μ΄κ±°ν)
π‘ Enum μ΄λ?
enum typeμ μμ(Constant)λ‘ μ¬μ©ν κ°λ€μ 미리 μ μΈνμ¬ μ¬μ©ν λ μ¬μ©νλ νΉλ³ν λ°μ΄ν° νμ μ΄λ€.
π‘ Enum μ¬μ© μ μ₯μ
- κΈ°μ‘΄ static final ν€μλλ₯Ό μ΄μ©ν μμ μ μΈ λ°©μμμλ ν΄λΉ μμμ κ°λ§ λΉκ΅νκ² λλ λ°λ©΄, enumμ μ΄μ©νμ¬ μμλ₯Ό μ μνκ² λλ©΄ κ° λΏλ§ μλλΌ νμ κΉμ§λ 체ν¬νκΈ° λλ¬Έμ νμ μ μμ ν μ½λλ₯Ό μμ±ν μμλ€.
- κΈ°μ‘΄ μμ μ μΈ λ°©μμ μ¬μ©νλ μ½λμμλ μμκ°μ΄ λ³κ²½λλ κ²½μ° ν΄λΉ μμλ₯Ό μ°Έμ‘°νλ μμ€μ½λλ λͺ¨λ μ¬μ»΄νμΌ ν΄μ€μΌ νλλ° enum μμλ₯Ό μ μνμ¬ μ¬μ©νλ κ²½μ°μλ κ·Έλ΄ νμκ° μλ€.
π‘ κΈ°μ‘΄ μμ μ μΈ λ°©λ²κ³Ό enum μμ μ μΈ λ°©λ² λΉκ΅
//μ΄κ±°ν => μμκ°λ€μ μ μΈνλ λ°©λ²
static final int A = 0;
static final int B = 1;
static final int C = 2;
static final int D = 3;
enum Data {A, B, C, D};
//μ΄κ±°ν μ μΈνλ λ°©λ²
enum μ΄κ±°ν μ΄λ¦ {μμκ°1, μμκ°2, μμκ°3, ..., μμκ°n}
π‘ μ΄κ±°νμμ μ¬μ©νλ λ©μλ
1) name() => μ΄κ±°ν μμμ μ΄λ¦μ λ¬Έμμ΄λ‘ λ°ννλ€.
2) ordinal() => μ΄κ±°ν μμκ° μ μλ μμκ°μ λ°ννλ€. (κΈ°λ³Έμ μΌλ‘ 0λΆν° μμ)
3) valueOf("μ΄κ±°ν μμμ΄λ¦"); => μ§μ λ μ΄κ±°νμμ 'μ΄κ±°νμμμ΄λ¦'κ³Ό μΌμΉνλ μ΄κ±°ν μμλ₯Ό λ°ννλ€.
π‘ CityλΌλ μ΄κ±°ν κ°μ²΄ μ¬μ©(κΈ°λ³Έκ°μ μ΄μ©νλ μ΄κ±°ν)
- name() μ μ¬μ©νμ¬ μμ μΆλ ₯κ³Ό
- ordinal() μ μ¬μ©νμ¬ μ΄κ±°ν μμ μμΉκ°μ λ°ννμ¬ μΆλ ₯νλ€.
public class Main {
public enum City { μμΈ, λΆμ°, λꡬ, κ΄μ£Ό, λμ };
public static void main(String[] args) {
City myCity1;//μ΄κ±°ν μμ κ°μ²΄ λ³μ μ μΈ
City myCity2;
// City enumμμ 'μμΈ' λ°μ΄ν°λ₯Ό κ°μ Έμ¨λ€.
myCity1 = City.valueOf("μμΈ");
// μ΄κ±°ν κ°μ²΄ λ³μμ κ° μ μ₯νκΈ°
myCity2 = City.λΆμ°;
System.out.println("myCity1 : " + myCity1.name());
System.out.println("myCity1μ oardinal : " + myCity1.ordinal());
System.out.println();
System.out.println("myCity2 : " + myCity2.name());
System.out.println("myCity2μ oardinal : " + myCity2.ordinal());
System.out.println();
}
}
π‘ μ΄κ±°ν κ°μ²΄ κ° λΉκ΅
public class Main {
public enum City { μμΈ, λΆμ°, λꡬ, κ΄μ£Ό, λμ };
public static void main(String[] args) {
City city = City.λꡬ;
System.out.println("λꡬμ λμ μ΄ κ°μκ°? true/false : " + (city == City.λμ ));
System.out.println("λꡬμ λκ΅¬κ° κ°μκ°? true/false : " + (city == City.λꡬ));
System.out.println("λꡬμ λꡬ λΉκ΅ => " + city.compareTo(City.λꡬ));
System.out.println("λꡬμ μμΈ λΉκ΅ => " + city.compareTo(City.μμΈ));
System.out.println("λꡬμ λμ λΉκ΅ => " + city.compareTo(City.λμ ));
}
}
π‘ λ°μ΄ν° κ°μ μμλ‘ μ§μ ν μ΄κ±°ν Season κ°μ²΄ μ μΈ
λ°μ΄ν° κ°μ μ ν΄μ€ κ²½μ°μλ μμ±μλ₯Ό λ§λ€μ΄μ κ΄νΈμμ κ°μ΄ λ³μμ μ μ₯λλλ‘ νλ€.
- valueOf λ₯Ό μ¨μ κ°μ Έμ€λ λ°©λ²κ³Ό μ§μ μ΄κ±°ν μμλ₯Ό μ¬μ©νμ¬ κ°μ μΆμΆνλ λ°©λ²μ΄ μλ€.
public class Main {
public enum Season {
λ΄("3μλΆν° 5μκΉμ§"),
μ¬λ¦("6μλΆν° 8μκΉμ§"),
κ°μ("9μλΆν° 11μκΉμ§"),
겨μΈ("12μλΆν° 2μκΉμ§");
// κ΄νΈμμ κ°μ΄ μ μ₯λ λ³μ μ μΈ
private String str;
// μμ±μ λ§λ€κΈ°(μ΄κ±°νμ μμ±μλ μ μ΄μκ° λ¬΅μμ μΌλ‘ 'private'μ΄λ€.)
Season(String data){//private Season(String data){ μ κ°λ€.
str = data;
}
// κ°μ λ°ννλ λ©μλ μμ±
public String getStr() {
return str;
}
}
public static void main(String[] args) {
Season ss1 = Season.valueOf("μ¬λ¦");
Season ss2 = Season.κ°μ;
System.out.println("Season ss1 is name() : " + ss1.name());
System.out.println("Season ss1 is ordinal() : " + ss1.ordinal());
System.out.println("Season ss1 is get() : " + ss1.getStr());
System.out.println("β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β ");
System.out.println("Season ss2 is name() : " + ss2.name());
System.out.println("Season ss2 is ordinal() : " + ss2.ordinal());
System.out.println("Season ss2 is get() : " + ss2.getStr());
}
}
π‘ μ΄κ±°ν Season κ°μ²΄ λ΄ μ΄κ±°ν μμ λ°μ΄ν°λ€μ λ°°μ΄λ‘ κ°μ Έμ μΆλ ₯
public class Main {
public enum Season {
λ΄("3μλΆν° 5μκΉμ§"),
μ¬λ¦("6μλΆν° 8μκΉμ§"),
κ°μ("9μλΆν° 11μκΉμ§"),
겨μΈ("12μλΆν° 2μκΉμ§");
// κ΄νΈμμ κ°μ΄ μ μ₯λ λ³μ μ μΈ
private String str;
// μμ±μ λ§λ€κΈ°(μ΄κ±°νμ μμ±μλ μ μ΄μκ° λ¬΅μμ μΌλ‘ 'private'μ΄λ€.)
Season(String data){//private Season(String data){ μ κ°λ€.
str = data;
}
// κ°μ λ°ννλ λ©μλ μμ±
public String getStr() {
return str;
}
}
public static void main(String[] args) {
Season[] enumArr = Season.values();
for(int i = 0 ; i < enumArr.length ; i++) {
System.out.println(enumArr[i].name() + " : " + enumArr[i].getStr());
}
System.out.println();
}
}