반응형
enum은 열거형(Enumeration)의 줄임말로, Java에서는 특정한 상수 집합을 정의하는 데 사용됩니다.
여러 개의 관련된 상수들을 한 곳에 모아서 정의하고 사용할 수 있게 해주는 구조입니다. enum은 코드를 더 읽기 쉽고 유지보수하기 쉽게 만들어줍니다.
enum의 특징
-상수 집합: enum은 관련된 상수들을 한 곳에 모아 정의합니다. 상수는 고유의 이름을 가집니다.
-정의된 상수 외의 값 사용 불가: enum에 정의된 상수 외의 값을 직접 설정할 수 없습니다.
-강력한 타입 체크: 컴파일 시간에 enum 타입의 변수가 정의된 상수 중 하나여야 함을 보장하여 타입 안정성(type safety)을 높입니다.
-추가적인 메서드와 필드 포함: 상수는 생성자, 메서드, 필드를 가질 수 있어서 보다 복잡한 상수의 동작을 정의할 수 있습니다.
enum의 장점
-가독성: 관련된 상수를 하나의 그룹으로 묶어서 코드의 가독성을 높여줍니다.
-유지보수성: enum을 사용하면 코드에서 사용되는 상수들을 중앙에서 관리할 수 있어서 유지보수가 쉬워집니다.
-타입 안정성: 컴파일러가 enum 타입의 값의 유효성을 검사하여 런타임 오류를 줄여줍니다.
-추가적인 기능: enum은 각 상수에 메서드와 필드를 추가하여 복잡한 동작을 정의할 수 있습니다.
소스코드
//enum 정의
enum Day {
SUNDAY("Family day", "일요일"),
MONDAY("Start of the work week", "월요일"),
TUESDAY("Productive day", "화요일"),
WEDNESDAY("Midweek", "수요일"),
THURSDAY("Almost Friday", "목요일"),
FRIDAY("End of the work week", "금요일"),
SATURDAY("Relaxing day", "토요일");
private final String description;
private final String koreanName;
// enum 생성자
Day(String description, String koreanName) {
this.description = description;
this.koreanName = koreanName;
}
// enum 메서드
public String getDescription() {
return description;
}
public String getKoreanName() {
return koreanName;
}
// 순서를 반환하는 메서드
public int getOrder() {
return this.ordinal() + 1; // ordinal() 메서드는 enum 상수의 순서를 반환합니다 (0부터 시작)
}
// 한글 요일 이름을 반환하는 메서드
public String getLocalizedDayName() {
return koreanName;
}
@Override
public String toString() {
return this.name() + " (" + this.getDescription() + ")";
}
}
public class TEST {
public static void main(String[] args) throws Exception {
// enum 사용
Day today = Day.MONDAY;
// switch문을 사용하여 enum 처리
switch (today) {
case MONDAY:
System.out.println("Today is Monday. Start of the work week!");
break;
case FRIDAY:
System.out.println("Today is Friday. End of the work week!");
break;
case SATURDAY:
case SUNDAY:
System.out.println("Today is the weekend!");
break;
default:
System.out.println("It's a regular workday.");
break;
}
System.out.println("--------------------------------------");
// enum 값 출력
for (Day day : Day.values()) {
System.out.println(day);
}
// enum의 메서드 사용
System.out.println("Today is a " + today.getDescription());
System.out.println("--------------------------------------");
// enum의 순서 메서드 사용
System.out.println("Order of " + today + " is " + today.getOrder());
System.out.println("--------------------------------------");
// 한글 요일 이름 출력
System.out.println("Today in Korean: " + today.getLocalizedDayName());
}
}
1) Day Enum 정의
- Day enum은 일주일의 각 요일을 상수로 정의합니다.
- 각 상수는 description과 koreanName이라는 두 개의 인스턴스 변수를 가집니다.
- Day enum은 생성자를 통해 description과 koreanName을 초기화합니다.
- getDescription(), getKoreanName(), getOrder(), getLocalizedDayName() 등의 메서드를 통해 각 상수의 속성에 접근할 수 있습니다
- toString() 메서드는 각 상수의 이름과 description을 문자열로 반환합니다.
2) main 메서드
- today 변수를 통해 현재 요일을 지정하고, switch 문을 사용하여 각 요일에 따른 메시지를 출력합니다.
- Day.values()를 사용하여 모든 enum 상수를 순회하며 출력합니다.
- getDescription(), getOrder(), getLocalizedDayName() 등의 메서드를 호출하여 각 요일의 정보를 출력합니다.
반응형
'개발이야기 > Java' 카테고리의 다른 글
[Java] replace, replaceAll 메서드 사용법, 차이점, 예제 (0) | 2024.12.05 |
---|---|
[Java] Stream(스트림) API 사용방법, 예제 (0) | 2024.07.02 |
[Java] @JsonProperty, @JsonFormat, @JsonIgnore 사용방법, 예제 (Jackson 어노테이션) (0) | 2024.06.18 |
[Java] 로그(log) 파일 만들기 (Logger 클래스 사용) (0) | 2024.05.23 |
[Java] 문자열에서 숫자만 추출하기 (메서드, 예제코드) (0) | 2024.05.16 |
댓글