열거형란?
Java에서 열거형(enumeration)은 일련의 상수를 표현하기 위해 사용되는 특수한 유형입니다. 열거형은 코드를 더 명확하게 만들고 유지보수하기 쉽게 합니다. 열거형은 단순한 상수뿐만 아니라 필드, 메서드, 생성자도 포함할 수 있습니다.
팁: 열거형은 클래스의 일종입니다.
열거형 정의
간단한 열거형 예제:
package CoreJava;
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}
열거형은 생성자가 없기 때문에 외부에서 객체를 만들 수 없습니다. 열거형 상수는 .을 통해 접근할 수 있습니다.
열거형 사용
열거형을 다른 유형과 같이 사용할 수 있습니다:
package CoreJava;
public class Example {
public static void main(String[] args) {
Day today = Day.MONDAY;
System.out.println(today);
}
}
열거형 필드와 메서드
열거형은 필드와 메서드를 포함할 수 있습니다:
public enum Planet {
MERCURY(3.303e+23, 2.4397e6),
VENUS(4.869e+24, 6.0518e6),
EARTH(5.976e+24, 6.37814e6),
MARS(6.421e+23, 3.3972e6);
private final double mass;
private final double radius;
Planet(double mass, double radius) {
this.mass = mass;
this.radius = radius;
}
public double getMass() { return mass; }
public double getRadius() { return radius; }
public double calculateGravity() {
final double G = 6.67300E-11;
return G * mass / (radius * radius);
}
}
추상 메서드 사용
열거형은 추상 메서드를 포함할 수 있습니다:
public enum Operation {
ADD {
public double execute(double x, double y) { return x + y; }
},
SUBTRACT {
public double execute(double x, double y) { return x - y; }
},
MULTIPLY {
public double execute(double x, double y) { return x * y; }
},
DIVIDE {
public double execute(double x, double y) { return x / y; }
};
public abstract double execute(double x, double y);
public static void main(String[] args) {
double x = 10.0;
double y = 5.0;
for (Operation op : Operation.values()) {
System.out.println(x + " " + op + " " + y + " = " + op.execute(x, y));
}
}
}
열거형 반복
모든 열거형 상수를 가져와 반복할 수 있습니다:
Day[] days = Day.values();
for (Day day : days) {
System.out.println(day);
}
생성자와 상속
- 열거형의 생성자는 기본적으로 프라이빗이며 외부에서 호출할 수 없습니다.
- 열거형은
java.lang.Enum을 상속하며 다른 클래스를 상속할 수 없습니다.
switch 문 사용
열거형은 switch 문과 잘 어울립니다:
Day day = Day.THURSDAY;
switch (day) {
case MONDAY:
System.out.println("Start of work week.");
break;
case FRIDAY:
System.out.println("End of work week.");
break;
case SATURDAY:
case SUNDAY:
System.out.println("Weekend!");
break;
default:
System.out.println("Midweek day.");
break;
}
결론
Java의 열거형은 유형 안전을 보장하며 일련의 상수를 표현하는 데 이상적인 도구입니다. 또한 필드, 메서드, 생성자 등을 통해 유연한 기능을 추가할 수 있습니다. 열거형은 상수 집합을 표현할 때 특히 유용합니다.