π μλ° Enum μμΈ μ€λͺ λ° νμ© μμ
enum
μ μλ°μμ μ΄κ±°ν λ°μ΄ν° νμ
μΌλ‘, μλ‘ κ΄λ ¨ μλ μμλ€μ μ§ν©μ νννλ λ° μ¬μ©λ©λλ€. νμ
μμ μ±μ 보μ₯νλ©°, μΆκ° νλμ λ©μλλ₯Ό κ°μ§ μ μμ΄ λ§€μ° μ μ©ν©λλ€.
1. 기본 ꡬ쑰
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}
2. νΉμ§
- νμ μμ μ± λ³΄μ₯: νΉμ enum κ°λ§ μ¬μ©ν μ μλλ‘ μ ν.
- κ°λ μ± ν₯μ: μ½λμ μλ―Έλ₯Ό λͺ ννκ² μ λ¬.
- Switch λ¬Έμμ μ¬μ© κ°λ₯: κ°λ μ±κ³Ό μ μ§ λ³΄μμ±μ λμ.
- λ©μλμ νλ μ μ κ°λ₯: μΆκ°μ μΈ λ°μ΄ν°μ λμμ ν¬ν¨ κ°λ₯.
- Singleton ν¨ν΄ μ μ¬μ±: enum κ°μ JVMμμ νλμ μΈμ€ν΄μ€λ‘λ§ μ‘΄μ¬.
3. enum νμ© μμ
(1) κΈ°λ³Έ μ¬μ©
public class EnumExample {
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public static void main(String[] args) {
Day today = Day.FRIDAY;
// Switch λ¬Έ μ¬μ©
switch (today) {
case MONDAY -> System.out.println("It's Monday!");
case FRIDAY -> System.out.println("TGIF!");
case SUNDAY -> System.out.println("Enjoy your Sunday!");
default -> System.out.println("It's just another day.");
}
}
}
(2) λ©μλ λ° νλ μΆκ°
public enum Season {
SPRING("Warm and Blossomy"),
SUMMER("Hot and Sunny"),
FALL("Cool and Breezy"),
WINTER("Cold and Snowy");
private final String description;
// μμ±μ
Season(String description) {
this.description = description;
}
// Getter λ©μλ
public String getDescription() {
return description;
}
}
public class EnumWithMethods {
public static void main(String[] args) {
for (Season season : Season.values()) {
System.out.println(season + ": " + season.getDescription());
}
}
}
(3) μΆμ λ©μλ ꡬν
public enum Operation {
ADD {
@Override
public double apply(double x, double y) {
return x + y;
}
},
SUBTRACT {
@Override
public double apply(double x, double y) {
return x - y;
}
},
MULTIPLY {
@Override
public double apply(double x, double y) {
return x * y;
}
},
DIVIDE {
@Override
public double apply(double x, double y) {
return x / y;
}
};
// μΆμ λ©μλ μ μ
public abstract double apply(double x, double y);
}
public class EnumAbstractExample {
public static void main(String[] args) {
double x = 10;
double y = 2;
for (Operation op : Operation.values()) {
System.out.printf("%s: %.2f%n", op, op.apply(x, y));
}
}
}
4. μ£Όμ λ©μλ
values()
: enumμ λͺ¨λ κ°μ λ°°μ΄λ‘ λ°ν.valueOf(String name)
: μ΄λ¦μ ν΄λΉνλ enum κ°μ λ°ν.ordinal()
: enumμ μμλ₯Ό λ°ν (0λΆν° μμ).name()
: μ΄κ±°ν μ΄λ¦μ λ°ν.
public class EnumMethods {
public enum Color {
RED, GREEN, BLUE
}
public static void main(String[] args) {
// λͺ¨λ enum κ° μΆλ ₯
for (Color color : Color.values()) {
System.out.println(color + " ordinal: " + color.ordinal());
}
// Stringμ EnumμΌλ‘ λ³ν
Color red = Color.valueOf("RED");
System.out.println("Color: " + red.name());
}
}
5. μ€μ νμ© μ
μν κ΄λ¦¬
public enum OrderStatus {
PENDING, PROCESSING, SHIPPED, DELIVERED, CANCELLED;
}
public class Order {
private int orderId;
private OrderStatus status;
public Order(int orderId) {
this.orderId = orderId;
this.status = OrderStatus.PENDING; // μ΄κΈ° μν
}
public void updateStatus(OrderStatus status) {
this.status = status;
}
public OrderStatus getStatus() {
return status;
}
public static void main(String[] args) {
Order order = new Order(101);
System.out.println("Initial Status: " + order.getStatus());
order.updateStatus(OrderStatus.SHIPPED);
System.out.println("Updated Status: " + order.getStatus());
}
}
6. κ²°λ‘
enum
μ λ¨μν μμ μ§ν© μ΄μμ κΈ°λ₯μ μ 곡νλ©°, κ°μ²΄ μ§ν₯μ μΈ λ°©μμΌλ‘ λ°μ΄ν°μ λ©μλλ₯Ό ν¬ν¨νμ¬ λ³΅μ‘ν λ‘μ§μλ νμ©ν μ μμ΅λλ€. νΉν, μν κ΄λ¦¬, κ³μ° λ‘μ§, λλ νμ
μμ μ±μ΄ μ€μν μν©μμ μ μ©νκ² μ¬μ©λ©λλ€.
π μλ° Enumμ κ°μ²΄μ²λΌ λμνλ€!
μλ°μ enum
μ λ¨μν μμμ μ§ν©μ΄ μλλΌ, λ΄λΆμ μΌλ‘ κ°μ²΄μ²λΌ λμν©λλ€. μ΄κ±°ν μμ(SPRING
, SUMMER
λ±)λ κ°κ° ν΄λΉ enum
ν΄λμ€μ μ±κΈν΄ κ°μ²΄λ‘ κ΄λ¦¬λ©λλ€.
1. λ΄λΆ λμ κ°λ
μλλ μλ° enum
μ΄ λ΄λΆμ μΌλ‘ λμνλ λ°©μμ μμ μ
λλ€:
public final class Season {
public static final Season SPRING = new Season("Warm and Blossomy");
public static final Season SUMMER = new Season("Hot and Sunny");
public static final Season FALL = new Season("Cool and Breezy");
public static final Season WINTER = new Season("Cold and Snowy");
private final String description;
private Season(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
2. enum ꡬ쑰μ μ₯μ
- νμ μμ μ±: μ΄κ±°ν μμ μΈμ κ°μ΄ μ¬μ©λ κ°λ₯μ±μ λ°°μ ν©λλ€.
- κ°μ²΄ μ§ν₯μ νμ₯μ±: νλμ λ©μλλ₯Ό ν¬ν¨νμ¬ μΆκ° λ°μ΄ν°λ₯Ό μ²λ¦¬ν μ μμ΅λλ€.
- μ±κΈν΄ ν¨ν΄: μ΄κ±°ν μμλ JVM λ΄μμ λ¨ νλμ μΈμ€ν΄μ€λ‘ κ΄λ¦¬λ©λλ€.
νμ μμ μ± μμ
// μλͺ»λ λ¬Έμμ΄ κΈ°λ° μ½λ
String season = "Sping"; // μ€νλ‘ μΈν΄ λ¬Έμ κ° λ°μν μ μμ
// enum μ¬μ©
Season season = Season.SPRING; // μ»΄νμΌ μμ μ μλͺ»λ κ° λ°©μ§
3. κ°μ²΄μ²λΌ λμνλ μ΄κ±°ν μμ
(1) νλμ λ©μλ νμ©
public enum Season {
SPRING("Warm and Blossomy") {
@Override
public String getSeasonActivity() {
return "Planting flowers";
}
},
SUMMER("Hot and Sunny") {
@Override
public String getSeasonActivity() {
return "Going to the beach";
}
},
FALL("Cool and Breezy") {
@Override
public String getSeasonActivity() {
return "Picking apples";
}
},
WINTER("Cold and Snowy") {
@Override
public String getSeasonActivity() {
return "Building a snowman";
}
};
private final String description;
private Season(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
public abstract String getSeasonActivity();
}
(2) μ¬μ© μμ
public class EnumExample {
public static void main(String[] args) {
for (Season season : Season.values()) {
System.out.println(season + ": " + season.getDescription());
System.out.println("Activity: " + season.getSeasonActivity());
System.out.println();
}
}
}
μΆλ ₯ κ²°κ³Ό:
SPRING: Warm and Blossomy
Activity: Planting flowers
SUMMER: Hot and Sunny
Activity: Going to the beach
FALL: Cool and Breezy
Activity: Picking apples
WINTER: Cold and Snowy
Activity: Building a snowman
4. κ²°λ‘
μλ° enum
μ λ¨μν μμλ₯Ό λμ΄νλ κ²μ λμ΄, **κ°μ²΄ μ§ν₯μ μΈ λ°©μ**μΌλ‘ λ°μ΄ν°λ₯Ό λ€λ£° μ μλλ‘ μ€κ³λμμ΅λλ€. μ΄λ₯Ό ν΅ν΄ νμ
μμ μ±κ³Ό μ μ§λ³΄μμ±μ λμ΄λ©΄μ 볡μ‘ν λ‘μ§λ μ²λ¦¬ν μ μμ΅λλ€. μ΄λ₯Ό νμ©νλ©΄ λ μ½κΈ° μ¬μ΄ μ½λμ νμ₯μ± μλ μ€κ³λ₯Ό ꡬνν μ μμ΅λλ€.
π μΆμ² : ChatGPT
'Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java κΈ°μ΄] λ΄λΆν΄λμ€μ staticμ λΆμ΄λ μ΄μ (0) | 2025.03.22 |
---|---|
μλ° λ¦¬νλ μ (0) | 2024.12.07 |
[Java] JDK, JRE, JVM μ§μμλ΅ (ChatGPT) (1) | 2024.08.31 |
[Java] Reflection (2) | 2024.02.21 |
Generics (Java) (1) | 2024.02.12 |
λκΈ