반응형
자바의 Enum 클래스는 연관된 상수들의 집합을 정의할 수 있는 데이터 유형입니다.
Enum 클래스를 통해 관련 있는 상수들을 그룹으로 묶어 표현할 수 있고, 코드를 보다 읽기 쉽게 만들어 줍니다.
Enum 특징
1. 열거형으로 선언된 순서에 따라 0부터 index 값을 가집니다.
2. 선언된 상수들은 모두 대문자로 이어야 합니다.
3. 열거형 변수들을 선언한 후 마지막에 세미콜론(;)을 찍지 않습니다.
Enum 문법
문법 : public enum Day {MONDAY, TUESDAY, WEDNESDAY ...}
사용법 : Day.MONDAY
Enum 메소드
- values() : 열거형의 모든 상수를 배열에 담아 반환합니다.
- ordinal() : 정의된 순서를 정수로 반환합니다.
- valueOf() : 지정된 열거형에서 name과 일치하는 열거형 상수를 반환합니다.
예제1 - Enum 클래스 정의
public enum ErrorMessage {
CRA_NAME_OVER_SIZE_ERROR("[ERROR] 자동차 이름은 5글자를 넘을 수 없습니다."),
CAR_NAME_NULL_ERROR("[ERROR] 자동차의 이름을 입력하지 않았습니다."),
CAR_NAME_INPUT_ERROR("[ERROR] 자동차 이름 입력 에러가 발생하였습니다."),
TRY_NUM_NOT_DIGIT_ERROR("[ERROR] 올바른 시도 회수가 아닙니다."),
TRY_NUM_NULL_ERROR("[ERROR] 시도 회수가 입력되지 않았습니다."),
TRY_NUM_INPUT_ERROR("[ERROR] 시도 회수 입력 에러가 발생하였습니다.");
private final String message;
ErrorMessage(String message){
this.message = message;
}
public String print() {
return message;
}
}
✔️상수와 특정 값을 연결시켜 사용하기 위해선 해당 값들을 설정하고 리턴할 수 있는 함수가 선언되어야 합니다.
( ex: 생성자 함수, print() )
열거형의 생성자
Enum 클래스의 생성자는 제어자가 묵시적으로 private으로 지정해 주어야 합니다.
고정된 상수의 집합으로 런타임이 아닌 컴파일 타임에 모든 값을 설정해야 합니다.
즉, 다른 패키지나 클래스에서 접근해 동적으로 값을 할당할 수 없게 해야 합니다.
열거형의 비교
public enum Direction { EAST, SOUTH, WEST, NORTH; }
열거형 상수 하나하나가 Direction의 객체입니다.
Direction 클래스의 static 상수 EAST, SOUTH, WEST, NORTH의 값은 객체의 주소입니다.
즉, 이 값은 바뀌지 않으므로 "==" 연산을 통해 비교가 가능합니다.
예제2 - Enum 상수와 연결된 값 가져오기
public class TestEnum {
public static void main(String[] args){
for (ErrorMessage msg : ErrorMessage.values()) {
System.out.println(msg.print()); // 모든 에러 메시지 출력됨
}
System.out.println(ErrorMessage.TRY_NUM_NULL_ERROR.print()) // [ERROR] 시도 회수 입력 에러가 발생하였습니다.
}
}
반응형
'JAVA' 카테고리의 다른 글
[JAVA] Java Stream groupingBy 통해 그룹핑하기 (0) | 2024.08.17 |
---|---|
[JAVA] JDK, JRE, JVM 차이 및 개념 이해하기 (0) | 2024.08.10 |
[JAVA] Java Optional.ofNullable() : Null 안전성과 간결한 코드 작성 방법 (0) | 2024.01.24 |
[JAVA] Java Stream 활용법: Filter, Map, FlatMap 예제와 함께 (0) | 2024.01.24 |
[JAVA] 자바 JUnit5 & AssertJ 테스트 코드 사용법 (0) | 2023.11.01 |