Enums
μ΄κ±°ν(Enums)μ μλ‘ μ°κ΄λ μμλ€μ μ§ν©μ μ μν λ μ¬μ©νλ λ°μ΄ν° νμ μΌλ‘, νμ μμ μ±μ 보μ₯νκ³ μ½λμ κ°λ μ±μ λμ΄λ λ° λͺ©μ μ΄ μλ€.
Enum μ μμ μ¬μ©
enum ν€μλλ₯Ό μ¬μ©νμ¬ μ΄κ±°νμ μ μνλ©°, κ° μμλ κ΄λ‘μ μΌλ‘ λλ¬Έμλ‘ μμ±νλ©° μΌνλ‘ κ΅¬λΆνλ€.
enum Direction {
EAST, SOUTH, WEST, NORTH
}μ΄κ±°ν λΉκ΅μ νμ©
μ΄κ±°ν μμλ JVM λ΄μμ μ μΌν μΈμ€ν΄μ€(μ±κΈν΄)μμ΄ λ³΄μ₯λλ€.
==μ°μ°μ: μ°Έμ‘°κ° λμΌνλ―λ‘==μ°μ°μλ‘ λΉκ΅ κ°λ₯equals()λ©μλ:Objectμequals()λ₯Ό μ€λ²λΌμ΄λνλ©°,==λΉκ΅μ λμΌνκ² λμcompareTo()λ©μλ:ComparableμΈν°νμ΄μ€λ₯Ό ꡬννλ©°, μ΄κ±°ν μμκ° μ μΈλ μμ(ordinal)λ₯Ό κΈ°μ€μΌλ‘ λΉκ΅λΉκ΅ μ°μ°μ:
<,>μ κ°μ μ μ λΉκ΅ μ°μ°μλ μ¬μ© λΆκ°λ₯
class Unit {
int x, y;
Direction direction;
void moveIf(Direction direction) {
if (direction == Direction.EAST) { // '==' μ°μ°μ λΉκ΅ κΆμ₯
x++;
} else if (direction.equals(Direction.SOUTH)) { // equals()λ κ°λ₯
y--;
} else if (direction.compareTo(Direction.NORTH) == 0) { // compareTo()λ μ¬μ© κ°λ₯
y++;
}
}
void moveSwitch(Direction direction) {
// switch λ¬Έμμ case λ μ΄λΈμ 'Direction.EAST'κ° μλ 'EAST' μ¬μ©
switch (direction) {
case EAST:
x++;
break;
case SOUTH:
y--;
break;
case WEST:
x--;
break;
case NORTH:
y++;
break;
}
}
}μ΄κ±°νκ³Ό λ©€λ² λ³μ, λ©μλ
μ΄κ±°νμ ν΄λμ€μ νΉμ±μ κ°μ§λ―λ‘, λ©€λ² λ³μ, λ©μλ, μμ±μλ₯Ό κ°μ§ μ μλ€.
μ΄κ±°νμ μμ±μλ 묡μμ μΌλ‘
privatepublicμ΄λprotectedλ‘ μ μΈ λΆκ°λ₯μ΄κ±°ν μΈμ€ν΄μ€λ₯Ό μμλ‘ μμ±νλ κ²μ λ§κΈ° μν΄ μ ν
μμλ₯Ό μ μΈν λ κ΄νΈ
()λ₯Ό μ¬μ©νμ¬ μμ±μλ₯Ό νΈμΆνκ³ κ° μ λ¬νλ λ°©μμΌλ‘ μ μΈ
μ΄κ±°νκ³Ό λ€νμ±
μΆμ λ©μλ νμ©
μ΄κ±°ν λ΄λΆμ μΆμ λ©μλλ₯Ό μ μΈνκ³ , κ° μμκ° μ΅λͺ ν΄λμ€μ²λΌ ν΄λΉ λ©μλλ₯Ό μ€λ²λΌμ΄λνμ¬ κ΅¬νν μ μλ€.
μΈν°νμ΄μ€μ λλ€ νμ©
μΈν°νμ΄μ€λ₯Ό ꡬννκ³ , λλ€ ννμμ μμ±μλ‘ λ°μ μμλ³ λμμ μ μν μλ μλ€.
java.lang.Enum λ©μλ
Javaμ λͺ¨λ μ΄κ±°νμ java.lang.Enum ν΄λμ€λ₯Ό μμλ°λλ€. μ΄ ν΄λμ€λ μ΄κ±°νμ λ€λ£¨κΈ° μν μ¬λ¬ μ μ©ν λ©μλλ₯Ό μ 곡νλ€.
T[] values()
λͺ¨λ μ΄κ±°ν μμλ₯Ό λ°°μ΄λ‘ λ°ν
int ordinal()
μ΄κ±°ν μμμ μμλ₯Ό λ°ν
String name()
μ΄κ±°ν μμμ μ΄λ¦μ λ¬Έμμ΄λ‘ λ°ν
Class getDeclaringClass()
μ΄κ±°ν μμκ° μ μλ μ΄κ±°νμ Class κ°μ²΄λ₯Ό λ°ν
String toString()
μ΄κ±°ν μμμ λ¬Έμμ΄ ννμ λ°ν(κΈ°λ³Έμ μΌλ‘ name() λ°ν)
μ΄κ±°νμ λ΄λΆ ꡬν
enum Direction { EAST, SOUTH }λ λ΄λΆμ μΌλ‘ λ€μκ³Ό μ μ¬ν ν΄λμ€λ‘ λ³νλλ€.
κ° μ΄κ±°ν μμλ public static finalλ‘ μ μΈλ μκΈ° μμ μ μΈμ€ν΄μ€κ° λμ΄ JVM λ΄μμ κ° μμμ μ μΌμ±(μ±κΈν΄)μ 보μ₯νλ©°, == λΉκ΅κ° κ°λ₯ν κ·Όκ±°κ° λλ€.
EnumSetκ³Ό EnumMap
μλ° μ»¬λ μ
νλ μμν¬λ μ΄κ±°νμ μν΄ νΉλ³ν μ΅μ νλ Setκ³Ό Map ꡬν체λ₯Ό μ 곡νλ€.
EnumSetλ΄λΆμ μΌλ‘ λΉνΈ 벑ν°(bit vector) μ¬μ©
λ©λͺ¨λ¦¬ μ¬μ©λμ΄ λ§€μ° μ κ³ ,
HashSetλ³΄λ€ μλ±ν λΉ λ₯Έ μ±λ₯μ μ 곡
EnumMapλ΄λΆμ μΌλ‘ λ¨μ λ°°μ΄μ μ¬μ©νλ©°, μμμ
ordinal()κ°μ μΈλ±μ€λ‘ νμ©HashMapλ³΄λ€ ν¨μ¬ λΉ λ₯΄κ³ ν¨μ¨μ μ΄λ€.
μ°Έκ³ μλ£
Last updated
Was this helpful?