728x90
반응형
Enum 이란?
enum은 'Enumeration' 의 약자로 열거, 목록 이라는 뜻을 가지고 있다.
말 그대로 관련있는 상수들의 집합이며
JAVA에서는 final로 String, int 등을 나타내는 일정 개수의 기본 자료형의 값을 고정할 수 있다.
예를 들어 요일, 계절, 과목 등을 나타낼 때 쓰일 수 있다.
Enum 장점
- 허용 가능한 값을 제한 할 수 있다.
- 수정 시 변경 범위가 최소화 된다. (enum만 수정하면 됨)
- 컴파일 시 데이터 타입 및 유효성 체크를 할 수 있다.
- 코드가 단순해지고 가독성이 좋아진다.
- 인스턴스의 생성과 상속을 방지하여 상수값의 안전성이 보장된다.
Enum 구현
1. enum 안의 값 꺼내오기
Day.java (Enum 키워드)
public enum Day {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY;
}
enum 클래스로 요일을 상수화 했다.
(열거 상수는 대문자로 작성해야 한다.)
Week.java
public class Week {
public static void main(String[] args) {
Day day1 = Day.FRIDAY;
System.out.println(day1);
}
변수를 선언해주고 바로 Day에서 요일을 찾아서 대입해준다.
출력해주면 아래와 같이 나온다.
결과 :
String day2 = Day.FRIDAY.name();
System.out.println(day2);
Day day3 = Day.valueOf("FRIDAY");
System.out.println(day3);
.name() 은 enum 자체에서 제공해주는 메소드이다.
.valueOf 는 String 값을 enum에서 가져오는 메소드이다.
결과 :
2. 상수의 데이터 값을 출력하기
Day.java (Enum 키워드)
public enum Day {
MONDAY("월요일"),
TUESDAY("화요일"),
WEDNESDAY("수요일"),
THURSDAY("목요일"),
FRIDAY("금요일"),
SATURDAY("토요일"),
SUNDAY("일요일")
;
private final String label;
Day(String label) {
this.label = label;
}
public String label() {
return label;
}
}
Day.MONDAY.name() 을 출력하면 MONDAY가 출력이 되지만,
영어가 아니라 한글로 '월요일' 을 출력하고 싶다.
그럴 때 생성자를 만들어 그 안에 특정 데이터 값을 집어 넣을 수 있다.
label 이라는 필드를 선언했다.
Week.java
public class Week {
public static void main(String[] args) {
System.out.println(Day.MONDAY.label());
}
}
Day.MONDAY.name() 대신 label()을 넣으면 아래와 같이 출력된다
결과 :
728x90
반응형
'CS공부' 카테고리의 다른 글
절차지향 언어 VS 객체지향 언어 (0) | 2023.07.03 |
---|---|
MVC 패턴이란 (Model-View-Controller) (0) | 2023.06.29 |
[JAVA] 싱글톤 패턴 (Singleton Pattern) 개념과 예제 (0) | 2023.06.26 |
[JAVA] 큐(Queue) 클래스 및 메서드 총정리 (0) | 2023.06.23 |
[JAVA] 스택(Stack) 클래스 및 메서드 총정리 (0) | 2023.06.10 |