β 1. Enum μ΄λ?
- μλ‘ κ΄λ ¨ μλ μμλ€μ νλμ νμ μΌλ‘ λ¬Άμ΄μ μ¬μ©ν μ μκ² ν΄μ£Όλ νΉλ³ν ν΄λμ€μ΄λ€.
- μ½κ²λ§ν΄, νλμ ν΄λμ€μ μ¬λ¬ μμλ€μ μ μνκ³ ν΄λΉ ν΄λμ€λ₯Ό ν΅ν΄ μμλ₯Ό μ΄μ©νκ² λλ λ°©μμ΄λ€.
- Enumμ Java 5 (JDK 1.5)μ μ²μ λμ λ κΈ°λ₯μ΄λ€.
β 2. μμλ?
- μμ(Constant)λ νλ² μ ν΄μ§λ©΄ λ³κ²½ν μ μλ κ°μ μλ―Ένλ€.
- μλ°μμ μμλ λ°μ΄ν° νλλΆμ μ μλ₯Ό νλ©°, λ³΄ν΅ staticν€μλμ finalν€μλλ₯Ό ν¨κ» μ¬μ©ν λ°μ΄ν°λ₯Ό μμλ‘ λ³Έλ€.
public class Constants {
public static final int MAX_USERS = 100;
}
β 3. Enum μ¬μ©λ²
- λνμ μΈ μ¬μ©λ²μ class ν€μλ λΆλΆμ enum ν€μλλ₯Ό λΆνλ©΄ enum ν΄λμ€κ° λ§λ€μ΄μ§λ€.
- enumμ μμλͺ μ μ μΌλ©΄, μμκ°μ΄ μλμΌλ‘ λ§λ€μ΄ μ§λ€. μμλ₯Ό μ½κ³ νΈνκ² λλ¦¬κ³ μ€μΌ μ μμ.
public enum Direction {
NORTH,
SOUTH,
EAST,
WEST;
}
β 4. java.lang.Enum μΆμ ν΄λμ€
- μλ°μλ "Enum" μ΄λΌλ ν΄λμ€λͺ μ κ°μ§ ν΄λμ€κ° μ‘΄μ¬νλ€.
- ν΄λΉ Enum ν΄λμ€λ enum ν€μλλ‘ λ§λ€μ΄μ§ ν΄λμ€λ€μ΄ μλμΌλ‘ μμμ λ°κ² λλ©°, μ€λ²λΌμ΄λ©μ ν΅ν΄ μ΄μ©μ΄ λλ€.
public abstract class Enum<E extends Enum<E>>
implements Constable, Comparable<E>, Serializable {
private final String name;
public final String name() {
return name;
}
private final int ordinal;
public final int ordinal() {
return ordinal;
}
protected Enum(String name, int ordinal) {
this.name = name;
this.ordinal = ordinal;
}
public String toString() {
return name;
}
β 5. Enum λ΄λΆ λμ μ리
- enumμ λ΄λΆμ μΌλ‘ μ»΄νμΌλ¬κ° μ»΄νμΌ μμ μ ννλ₯Ό λ°κΏμ€λ€.
(1) μ»΄νμΌ μ
public enum Direction {
NORTH,
SOUTH,
EAST,
WEST;
}
(2) μ»΄νμΌ ν
public final class Direction extends Enum<Direction> {
public static final Direction NORTH = new Direction("NORTH", 0);
public static final Direction SOUTH = new Direction("SOUTH", 1);
public static final Direction EAST = new Direction("EAST", 2);
public static final Direction WEST = new Direction("WEST", 3);
private static final Direction[] VALUES = { NORTH, SOUTH, EAST, WEST };
private Direction(String name, int ordinal) {
super(name, ordinal); // Enum ν΄λμ€μ μμ±μ νΈμΆ
}
@Override
public static Direction[] values() {
return VALUES.clone();
}
@Override
public static Direction valueOf(String name) {
for (Direction d : VALUES) {
if (d.name().equals(name)) return d;
}
throw new IllegalArgumentException("No enum constant " + name);
}
}
- enum ν€μλκ° class ν€μλλ‘ λ³κ²½λλ©΄μ, ν΄λμ€κ° λλ€.
- Enum ν΄λμ€λ₯Ό μμλ°λ κ΅¬μ‘°κ° λλ€.
- ν΅μ¬μ enumμ λ§λ€ λ μ¬μ©ν μμλͺ μ΄ μλμΌλ‘ μμ νλκ°μ κ°μ²΄λ₯Ό μμ±ν΄ λ£μ΄μ£Όκ² λλ€.
β 6. μ 리
- μλ°μμ enum ν€μλλ‘ λ§λ ν΄λμ€λ μ»΄νμΌ μμ μ class ν€μλλ‘ λ³κ²½λλ©°, ν΄λμ€κ° λλ€.
- enum μμλͺ μ μλμΌλ‘ μμ νλκ°μ κ°μ²΄λ₯Ό μμ±ν΄μ λ£μ΄μ€λ€.
- Enum ν΄λμ€λ java.lang ν¨ν€μ§μ μΆμν΄λμ€λ‘ μ‘΄μ¬νλ©°, ν΄λΉ Enumμ μλ μμμ λ°κ² λ¨.
'βJava > πJava Programming' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] JVMκ³Ό μλ° μ€ν μ리 (1) | 2025.04.14 |
---|---|
[Java] Javaμ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ΄λ? (0) | 2025.03.06 |
[Java] λ³μ μ΄κΈ°νμ λν μ΄ν΄ (0) | 2024.11.05 |
[Java] Annotation μ΄λ? ( μ λ Έν μ΄μ ) (0) | 2024.11.05 |
[Java] JVM λμ μ리 (1) | 2024.10.23 |