일단 Enum의 아주 간단한 의미는 Enum(열거형)은 프로그래밍에서 상수 집합을 정의하는 자료형이다. Enum을 사용하면 관련된 상수 값을 그룹화하여 코드의 가독성을 높이고, 값의 범위도 제한 가능하다.
특징
- 정의된 상수 집합: Enum은 특정 상수 값들의 집합을 정의. 예를 들어, 요일이나 월, 상태 코드 등을 정의할 때 사용
- 타입 안정성: Enum은 코드에서 정의한 상수 값만을 허용하기 때문에 타입 안전성을 제공. 이는 잘못된 값의 사용을 방지할 수 있다.
- 가독성: 코드의 의미를 명확하게 하기 때문에 코드의 가독성을 높인다. 상수를 직접 사용하는 것보다 더 직관적이고 이해하기 쉬운 코드 작성을 도울수 있다.
- 내장 메서드: 대부분의 프로그래밍 언어에서는 Enum에 대해 다양한 내장 메서드를 제공하여 상수 값을 처리하고 비교하는 작업을 쉽게 한다.
Enum 정의예제
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
EX) 타 클래스에 사용할때 Day today = Day.MONDAY;
각 값에 설명을 부여하고 싶을떈
public enum Day {
SUNDAY(7), MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6)
}
이렇게 괄호 안에다가 작성하면 된다. 문자열일 경우 작은 따옴표로 가능.
Enum의 필드와 메서드 추가
public enum Day {
SUNDAY("Rest day"),
MONDAY("Start of work week"),
TUESDAY("Second day of work week"),
WEDNESDAY("Midweek"),
THURSDAY("Almost there"),
FRIDAY("End of work week"),
SATURDAY("Weekend");
private String description;
// 생성자
private Day(String description) {
this.description = description;
}
// 메서드
public String getDescription() {
return description;
}
}
- 필드: description은 각 요일에 대한 설명을 저장한다.
- 생성자: Day enum의 생성자는 private로 선언되어 있으며, 각 상수의 description 필드를 초기화한다.
- 메서드: getDescription() 메서드는 요일의 설명을 반환한다.
Enum 활용예
해당 예는 사칙연산를 예로 들겠다.
스태틱 메서드 안의 OperatorType.values()는 OperatorType 상수의 배열로 반환함.
즉 values()는 열겨형의 모든 상수를 배열 형태로 반환한다.
그러기에 operator에서 받은 값을 type.symbol과 일치하면 type으로 리턴됩니다. 만일 잘못된 문자를 작성하면 "잘못된 기호로"로 출력 된다.
다른 클래스로 적용할때
생성자 매개변수에 Enum에서 만든 타입을 그대로 넣고, 스위치문을 통해 연산자 기호 대신 Enum타입안의 필드를 넣으면 연산자 기호를 Enum파일에서 연산자 기호에 맞는 타입에 맞는 타입을 추출하게 된다.
scanner에서 '+'를 받게 되면 operator 문자열이 '+'이므로 'tg'는 OperatorType.PLUS가 된다.
문자열 tg는 arithmeticCalculator의 매개변수가 되어 num1과 num2값의 계산하는 조건이 되는 연산자가 되어 result으로 나온다.
해당 설명에 오류가 있다면 댓글로 알려주세여!
'Java 문법정리 (Array부터)' 카테고리의 다른 글
패턴 매칭(Pattern Matching) (0) | 2024.12.11 |
---|---|
동등성, 동일성 (0) | 2024.08.09 |
Interface (0) | 2024.07.31 |
Calendar(java 8이후는 java.time) (0) | 2024.07.26 |
기본형 매개변수, 참조형 매개변수 (2) | 2024.07.23 |