Post

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.