Enum
Enum
1. Enum
1
2
3
public enum User {
Y, N
}
User.Y 를 사용하면 Y라는 상수 값만 사용할 수 있다.
하지만 Y 대신 “정답” 같은 값을 사용하고 싶다면?
2. Enum에 값 매핑하기
Y라는 값 대신 “정답”이라는 문자열을 함께 사용하고 싶다면 enum 상수에 필드를 추가해야 한다.
Y → “정답”, N → “오답”
이를 위해 enum 내부에 private final 필드를 선언한다.
Enum + 필드 + 생성자
1
2
3
4
5
6
7
8
9
@Getter
@AllArgsConstructor
public enum User {
Y("정답"),
N("오답");
private final String name;
}
3. Lombok 어노테이션
Y("정답") 는 생성자 호출
- enum 상수는 내부적으로 생성자를 통해 값이 주입
"정답"→name필드에 매핑됨
@Getter
enum 필드 값을 외부에서 조회하기 위함
1
User.Y.getName(); // "정답"
@AllArgsConstructor
- enum에 선언된 모든 필드를 파라미터로 받는 생성자 자동 생성
- 아래 생성자를 Lombok이 대신 만들어준다
1
2
3
public User(String name) {
this.name = name;
}
@AllArgsConstructor를 사용하지 않는 경우
@AllArgsConstructor를 사용하지 않으면 생성자를 직접 작성해야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
@Getter
public enum User {
Y("정답"),
N("오답");
private final String name;
public User(String name) {
this.name = name;
}
}
4. Enum 필드 확장 (여러 값 관리)
enum에 여러 정보를 동시에 담을 수도 있다.
1
2
3
4
5
6
7
8
9
10
@Getter
@AllArgsConstructor
public enum User {
Y("정답", "A"),
N("오답", "B");
private final String name;
private final String class;
}
이제 enum 하나로 다음 정보를 한 번에 조회할 수 있다.
1
2
User.Y.getName(); // "정답"
User.Y.getTeam(); // "A"
“정답이고 A class다” 라는 의미를 하나의 enum 값으로 표현할 수 있다.
This post is licensed under CC BY 4.0 by the author.