728x90
enum 의 개념
- 열거형(enum) 타입을 정의하는 데 사용되는 특별한 클래스.
- 여러 상수들을 하나의 타입으로 정의할 수 있도록 해준다.
- 단순히 상수 집합을 표현하는 것이 아닌 클래스 처럼 동작하여
메서드 또는 필드를 가질 수 있어 더 강력한 기능을 제공한다.
[✔️예시01_기본동작]
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
Day today = Day.MONDAY;
if (today == Day.MONDAY) {
System.out.println("오늘은 월요일입니다.");
}
➡️의미를 가진 단어들을 상수로 사용하기 때문에 가독성은 물론 안정적으로 사용할 수 있다.
enum 의 특징
- 타입의 안전성
잘못된 값을 사용할 수 없어 안전성을 보장한다. - 내부적으로 클래스로 취급된다
생성자, 필드 , 메서드 등을 가질 수 있다. - 메서드 추가 가능하다
각 상수에 대해 특정 동작을 정의 할 수있다.
[✔️예시02_메서드동작]
public enum Season {
SPRING("봄"), SUMMER("여름"), FALL("가을"), WINTER("겨울");
private String koreanName;
Season(String koreanName) {
this.koreanName = koreanName;
}
public String getKoreanName() {
return koreanName;
}
}
Season season = Season.SPRING;
System.out.println(season.getKoreanName()); // 출력: 봄
enum 의 주요 메서드
[✔️예시03_enum Season]
public enum Season {
SPRING("봄"), SUMMER("여름"), FALL("가을"), WINTER("겨울");
private String koreanName;
Season(String koreanName) {
this.koreanName = koreanName;
}
public String getKoreanName() {
return koreanName;
}
}
[✔️예시03_method : values ()]
values() : enum 타입에 정의된 모든 상수를 배열로 반환
public class EnumExample {
public static void main(String[] args) {
// values() 메서드를 사용하여 모든 enum 값을 출력
for (Season season : Season.values()) {
System.out.println(season + " : " + season.getKoreanName());
}
}
}
[출력 결과]
SPRING : 봄
SUMMER : 여름
FALL : 가을
WINTER : 겨울
[✔️예시03_method : valueOf (String name) ]
valueOf (String name) : String 값을 사용하여 해당하는 enm 상수를 반환하는 방법.(단 , 대소문자 일치 주의)
public class EnumExample {
public static void main(String[] args) {
// valueOf() 메서드를 사용하여 특정 문자열을 enum 상수로 변환
Season season = Season.valueOf("SUMMER");
System.out.println("선택된 계절: " + season + " (" + season.getKoreanName() + ")");
}
}
[출력 결과]
선택된 계절: SUMMER (여름)
[✔️예시03_method : name() ]
name() : 해당 열거형 상수의 이름을 문자열로 반환.
public class EnumExample {
public static void main(String[] args) {
// name() 메서드를 사용하여 enum 상수의 이름을 가져오기
Season season = Season.WINTER;
System.out.println("Enum 상수 이름: " + season.name());
}
}
[출력 결과]
Enum 상수 이름: WINTER
[✔️예시03_method : toString () ]
toString() : name()과 동일하게 상수의 이름을 반환하지만 필요에 따라 재정의가 가능하다.
toString을 재정의 하였다면 다른 결과를 반환할 수 있다.
// toString() 메서드 재정의
@Override
public String toString() {
return koreanName;
}
public class EnumExample {
public static void main(String[] args) {
// toString() 재정의 후 출력
Season season = Season.SPRING;
System.out.println("현재 계절: " + season); // SPRING 대신 "봄"이 출력됩니다.
// 모든 시즌 출력
for (Season s : Season.values()) {
System.out.println(s); // 각각의 상수가 한글 이름으로 출력됩니다.
}
}
}
[출력 결과]
현재 계절: 봄
봄
여름
가을
겨울
[✔️예시03_method : ordinal() ]
ordinal() : enum 상수가 선언된 순서의 인덱스를 반환 . (첫번째 값이 0부터 시작.)
public class EnumExample {
public static void main(String[] args) {
// ordinal() 메서드를 사용하여 열거형 상수의 인덱스를 확인
Season season = Season.FALL;
System.out.println(season + "의 순서: " + season.ordinal());
}
}
[출력 결과]
FALL의 순서: 2
'Developer > JAVA' 카테고리의 다른 글
JAVA , Exception의 직접 처리와 위임 처리 , 사용자 정의 Exception (0) | 2024.09.23 |
---|---|
Java , 예외 처리 Exception , try-catch (0) | 2024.09.22 |
JAVA , 추상 클래스의 다형성 보기 (1) | 2024.08.08 |
JAVA , 추상 클래스 (0) | 2024.08.08 |
JAVA , 클래스의 다형성, 타입 캐스팅(형변환) , 종단 클래스 (0) | 2024.08.07 |