괄호를 이용한 ENUM 생성자 처리

예시 및 설명

Java에서 아래와 같이 괄호로 값을 전달하는 방식은 Enum 생성자(enum constructor) 호출 방식이다.

public enum FriendRequest {
    REQUESTED(RequestStatus.REQUEST),
    REFUSED(RequestStatus.REFUSED);
}

이 방식은 Enum 상수 각각이 생성자에 값을 전달하여 내부 필드를 초기화하는 패턴이다.
각 상수(REQUESTED, REFUSED)는 Enum이 정의한 생성자에 지정된 값을 넘긴다.
이렇게 하면 ENUM상수 마다 다른 값을 갖게 될 수 있다.

위와 같이 괄호를 이용해서 처리를 하려면 아래와 같이 생성자와 변수가 있어야 한다.

private final String status;
private FriendRequest(String status) {
    this.status = status;
}

완성된 예시 코드

@RequiredArgsConstructor  
@Getter  
public enum FriendRequest {  
    REQUESTED(RequestStatus.REQUEST),  
    REFUSED(RequestStatus.REFUSED);  
  
    private final String status;  
 
	// 상태 정보를 static String으로 저장한다.
    public static class RequestStatus {  
        public static final String REQUEST = "FRIEND_REQUEST";  
        public static final String REFUSED = "FRIEND_REFUSED";  
    }  
}