-
[Java] Enum 클래스Programming Language/Java & Kotlin 2019. 4. 18. 15:51반응형
열거체(enumeration type)
- JDK 1.5부터는 C언어의 열거체보다 더욱 향상된 성능의 열거체를 정의한 Enum 클래스를 사용할 수 있음
열거체의 장점
- 열거체를 비교할 때 실제 값 뿐만 아니라 타입까지도 체크함
- 열거체의 상수값이 재정의 되더라도 다시 컴파일할 필요가 없음
열거체의 정의 및 사용
-
자바에서는 enum 키워드를 사용하여 열거체를 정의할 수 있음
enum 열거체이름 { 상수1이름, 상수2이름, ... } enum Rainbow { RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET }
-
이렇게 정의된 열거체는 다음처럼 사용함
-
열거체이름.상수이름
-
Rainbow.RED
열거체의 상수값 정의 및 추가
- 열거체의 첫번째 상수값은 0부터 설정되며, 그다음은 바로 앞의 상수값보다 1만큼 증가되며 설정됨
- 불규칙한 값을 상수값으로 설정하고 싶으면 상수의 이름 옆에 괄호() 를 추가하고, 그 안에 원하는 상수값을 명시할 수 있음
- 이때에는 불규칙한 특정 값을 저장할 수 있는 인스턴스 변수와 생성자를 아래와 같이 별도로 추가해야함
java.lang.Enum 클래스
- Enum 클래스는 모든 자바 열거체의 공통된 조상 클래스
- Enum 클래스에는 열거체를 조작하기 위한 다양한 메소드가 포함되어 있음
values() 메소드
- values() 메소드는 해당 열거체의 모든 상수를 저장한 배열을 생성하여 반환함
- 이 메소드는 자바의 모든 열거체에 컴파일러가 자동으로 추가해 주는 메소드
valueOf() 메소드
- valueOf() 메소드는 전달된 문자열과 일치하는 해당 열거체의 상수를 반환함
ordinal() 메소드
- ordinal() 메소드는 해당 열거체 상수가 열거체 정의에서 정의된 순서(0부터 시작)를 반환함
- 이때 반환되는 값은 열거체 정의에서 해당 열거체 상수가 정의된 순서이며, 상수값 자체가 아님
대표적인 Enum 메소드
- static E values() : 해당 열거체의 모든 상수를 저장한 배열을 생성하여 반환
- static E valueOf(String name) : 전달된 문자열과 일치하는 해당 열거체의 상수를 반환
- protected void finalize() : 해당 Enum 클래스가 final 메소드를 가질 수 없게 됨
- String name() : 해당 열거체 상수의 이름을 반환함
- int ordinal() : 해당 열거체 상수가 열거체 정의에서 정의된 순서(0부터 시작)를 반환함
반응형'Programming Language > Java & Kotlin' 카테고리의 다른 글
[Java] 리팩토링 할 때 고려할 사항들 (0) 2021.05.30 [Java] 람다식 (0) 2019.06.13 [Java] 스트림 API (0) 2019.04.16 [Java] 람다 표현식 (0) 2019.04.15 [Java] StringBuffer (1) 2018.12.01