[Java] enum 다시 보기

snowballnote·6일 전

Biz Assist에서 낙찰방법 판정 상태를 나누면서
enum을 사용했다.

public enum BidAwardMethodStatus {
    CONFIRMED,
    LIKELY,
    NOT_DETECTED,
    UNKNOWN
}

enum이 뭐였지

enum은
정해진 값만 사용할 수 있게 만드는 타입이다.

예를 들어 판정 상태가

CONFIRMED
LIKELY
NOT_DETECTED
UNKNOWN

이 네 가지뿐이라면
문자열로 아무 값이나 넣게 두는 것보다 enum으로 제한하는 게 안전하다.

String으로 쓰면 안 되나

문자열로도 만들 수는 있다.

String status = "CONFIRMED";

근데 이렇게 하면

"CONFIRMED"
"confirmed"
"CONFIRM"

처럼 오타나 표현 차이가 생길 수 있다.

enum을 쓰면

BidAwardMethodStatus.CONFIRMED

처럼 미리 정의된 값만 사용할 수 있다.

Biz Assist에서는 왜 썼나

낙찰방법 판정 결과에는
판정이 얼마나 확실한지도 같이 담아야 했다.

CONFIRMED
→ 구조화된 정보에서 명확하게 확인

LIKELY
→ 첨부문서에서 근거를 찾음

NOT_DETECTED
→ 다른 낙찰방법이 확인됨

UNKNOWN
→ 판단할 정보가 부족함

그래서 단순히 true / false로 나누기보다
상태를 여러 단계로 표현했다.

다른 enum도 같이 사용했다

판정 상태뿐 아니라
근거가 어디서 왔는지도 enum으로 만들었다.

public enum BidAwardMethodSource {
    STRUCTURED_DETAIL,
    ATTACHMENT_DOCUMENT,
    NOT_AVAILABLE
}

이렇게 하면

무슨 상태인지
+
어디서 판단했는지

를 각각 정해진 값으로 관리할 수 있다.

다시 정리

enum
→ 사용할 수 있는 값을 미리 정해두는 타입

String
→ 어떤 값이든 들어갈 수 있음

boolean
→ true / false 두 상태만 표현 가능

Biz Assist에서는

판정 상태와 근거 출처를 정해진 값으로 관리하기 위해 enum을 사용했다.

이번에 보니까 enum은
그냥 상수 모음이라기보다

상태나 종류처럼 선택지가 정해진 값을 표현할 때 쓰는 타입

이라고 생각하면 이해하기 쉬웠다.

profile
개발자로 이 험난한 세상 살아가기

0개의 댓글