본문 바로가기
Language/Java

[Java API] enum 주요 메서드 정리

by 클레어몬트 2024. 8. 24.
 

타입 안전 열거형 패턴 - Type-Safe Enum Pattern  

ㅁenum 열거형: 타입 안전성을 제공하고, 코드의 가독성을 높이며, 예상 가능한 값들의 집합을 표현하는 데 사용

정해진 객체만 사용할 수 있기 때문에, 잘못된 값을 입력하는 문제를 근본적으로 방지해 준다. (런타임 에러 아닌 컴파일 에러로 사전 차단)

 enum은 enumeration의 약자이다 

 

(특징)

1. 외부 생성도 컴파일 에러로 차단해준다.

2. 열거형은 java.lang.Enum 를 자동(강제)으로 상속받는다..

3. 열거형은 이미 java.lang.Enum 을 상속받았기 때문에 추가로 다른 클래스를 상속을 받을 수 없다.

4. 열거형은 인터페이스를 구현할 수 있다.

5. 열거형에 추상 메서드를 선언하고, 구현할 수 있다. (이 경우 익명 클래스와 같은 방식을 사용)

6. 열거형은 switch문에도 사용 가능하다.

7. static import를 사용하면 더 가독성을 높일 수 있다.

e.g. Tier.GOLD를 static import를 통해 GOLD로 사용

 

 

[열거형 주요 메서드]

- values(): 모든 enum 상수를 포함하는 배열을 반환

 

- valueOf(String name): 주어진 이름과 일치하는 enum 상수를 반환

 

- name(): enum 상수의 이름을 문자열로 반환

 

- toString(): enum 상수의 이름을 문자열로 반환

name() 메서드와 유사하지만, toString() 은 직접 오버라이드 할 수 있다

 

- ordinal(): enum 상수의 선언 순서를 반환(0부터 시작)

 

(주의) ordinal()은 가급적 사용하지 않는 것이 좋다

이 값을 사용하다가 중간에 상수를 선언하는 위치가 변경된다면 전체 상수의 위치가 모두 변경될 수 있기 때문이다.

예시: 중간에 BASIC 다음에 SILVER 등급이 추가되는 경우 GOLD, DIAMOND 의 값이 하나씩 추가된다.

**기존**
`
BASIC: 0`

`GOLD: 1`

`DIAMOND: 2`

 

**추가**
`
BASIC: 0`

`SILVER: 1`

`GOLD: 2`

`DIAMOND: 3`

 

기존 GOLDordinal() 값인 1을 데이터베이스나 파일에 저장하고 있었는데, 중간에 SILVER 가 추가되면 데이터베이스나 파일에 있는 값은 그대로 1로 유지되지만, 애플리케이션 상에서 GOLD2가 되고, SILVER1이 된다. 쉽게 이야기해서 ordinal() 의 값을 사용하면 기존 GOLD 회원이 갑자기 SILVER 가 되는 큰 버그가 발생할 수 있다.

 

 

 

 

 

 

참고 및 출처: 김영한의 실전 자바 - 중급 1편

https://www.inflearn.com/course/%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%8B%A4%EC%A0%84-%EC%9E%90%EB%B0%94-%EC%A4%91%EA%B8%89-1

'Language > Java' 카테고리의 다른 글

[Java] 중첩 클래스에 대한 고찰  (0) 2024.09.09
[Java API] 날짜와 시간 라이브러리  (3) 2024.08.27
[Java API] Math 클래스, Random 클래스  (0) 2024.08.23
[Java API] System 클래스  (0) 2024.08.23
[Java API] Class 클래스  (0) 2024.08.23