1. Enum 이란?
enum은 서로 연관된 상수들의 집합으로 상수를 여러개 정의 할 때 사용한다.
ex) 요일, 계절, 과목 등을 나타낼 때 쓰일 수 있다.
2. Enum 구현하기
1. enum 정의
- enum 클래스로 언어들을 상수화 했다(열거 상수는 대문자로 작성해야 한다.)
- enum은 클래스처럼 선언해서 사용 가능하다.

2. enum 값 출력
- enum 객체가 출력되는걸 볼 수 있다.

실행 결과:

3. Enum의 장점
Enum은 코드의 가독성을 높이고 논리적인 오류를 줄일 수 있는 장점이 있다.
1) 상수와 리터럴이 논리적 연관이 없는 문제를 해결 가능하다.
- ENGLISH라는 상수와 1이라는 리터럴은 논리적으로 아무런 연관이 없다.
- 이러한 문제를 해결 가능하다.

2) 서로 다른 개념끼리 이름이 충돌할 수 있는 문제를 해결 가능하다.
- 예를 들어서 과일의 APPLE과 회사의 APPLE은 같은 APPLE이지만 완전히 다른 의미이다.
- Fruit.APPLE과 Company.APPLE과 같이 열거형으로 정의할 경우 쉽게 구분할 수 있다.
3) 리팩토링 범위의 최소화
- 내용의 추가나 수정이 필요하다면, enum코드 외에 수정할 필요가 없다.
4. Java에서의 Enum 특징
1) enum에 정의된 상수들은 enum 타입의 객체이다.
- C언어나 다른 언어들과는 달리 Java에서의 enum은 enum 타입의 객체이다.
- 따라서 메소드 영역에는 클래스와 클래스 변수가 저장되고 힙 영역에는 enum 객체 인스턴스가 저장된다.

2) 생성자와 메서드를 추가할 수 있다.
- 자바에서의 enum 생성자는 private이라서 외부에서 접근할 수 없다.
- 생성자를 이용해서 상수에 데이터를 추가할 수 있다.

3) enum은 switch문의 조건식에서도 활용이 가능하다.
- enum은 swtich문의 조건식에서도 사용할 수 있다.

실행 결과:

5. Enum이 제공하는 메서드
1) values()
- enum 타입의 모든 값들을 배열로 만들어서 리턴해주는 메소드이다.

실행 결과:

2) ordinal()
- oridinal() 메소드는 전체 enum중에 현재 값이 몇번째인지 알려준다.
- 순서의 값은 배열과 마찬가지로 0부터 시작한다.


실행 결과:

3) valueOf()
- valueOf 메소드는 열거 객체의 상수명과 동일한 문자열을 입력받아, 일치하는 열거 객체를 반환.

실행 결과:

4) name()
- 열거 객체가 가지고 있는 문자열을 반환하는데, 이때 문자열은 열거 객체를 선언할 때 명시한 상수 이름이다.

실행 결과:

5) compareTo()
- 두 열거 객체간의 순번을 비교하여 상대적 순번 차이를 반환하는 메소드이다.
- 상대 열거 객체보다 순번이 빠르다면 음수가, 느리다면 양수가 반환된다.

실행 결과:

'Java' 카테고리의 다른 글
[Java] 자바 접근제어자(public, protected, default, private) (1) | 2024.09.16 |
---|---|
[Java] Quartz Scheduler 사용 해보기 (0) | 2024.09.03 |
[Java] JSON 객체 다루기(JSONObject, JSONArray) (0) | 2024.08.02 |
[Java] ArrayList 내부 구조 파헤치기(크기, 메모리 구조, 내부 동작 과정) (0) | 2024.07.30 |
[Java] 자바 컬렉션 프레임워크(Collection Framework) (0) | 2024.06.19 |