[Java] enum 다시 보기

snowballnote·2026년 9월 21일

한국도로공사 공고를 추가하면서 낙찰방법 분류 로직을 따로 만들었다.

이때 추가한 enum.

BidAwardMethodCategory
BidAwardMethodStatus
BidAwardMethodSource

enum

정해진 값만 사용하도록 묶어두는 타입.

문자열로 상태를 관리하면 이런 오타가 가능하다.

String status = "TAREGT";

enum이면 선언된 값만 사용할 수 있다.

ReviewStatus status = ReviewStatus.TARGET;

값이 정해져 있는 상태나 분류값은 문자열보다 enum으로 두는 게 안전하다.

Biz Assist에서는

낙찰방법 종류를 판단할 때 사용했다.

boolean smallAmountEstimate =
        awardMethodCategory
                == BidAwardMethodCategory.SMALL_AMOUNT_ESTIMATE;

boolean qualificationReview =
        awardMethodCategory
                == BidAwardMethodCategory.QUALIFICATION_REVIEW;

Category
→ 어떤 낙찰방법인지

Status
→ 판정 상태가 어떤지

둘을 따로 관리했다.

예를 들어 적격심사로 분류됐더라도 첨부문서 근거만 있는 경우에는 추가 확인이 필요했다.

if (qualificationReview
        && awardMethodStatus == BidAwardMethodStatus.LIKELY) {

    additionalCheckReasons.add(
            "첨부문서 근거의 적격심사 여부 확인 필요"
    );
}

즉 QUALIFICATION_REVIEW와 LIKELY는 역할이 다르다.

QUALIFICATION_REVIEW
→ 적격심사로 분류

LIKELY
→ 아직 추가 확인이 필요한 상태

name() / valueOf()

DTO에는 enum 이름을 문자열로 저장했다.

qualification.setAwardMethodCategory(
        result.category().name()
);

name()

BidAwardMethodCategory.QUALIFICATION_REVIEW.name()

결과

QUALIFICATION_REVIEW

다시 enum으로 사용할 때는 valueOf().

BidAwardMethodCategory.valueOf(
        qualification.getAwardMethodCategory()
);

문자열 이름과 enum 상수 이름이 정확히 같아야 한다.

내 코드에서는 이렇게 사용했다.

Classifier
→ enum으로 판정
→ name()
→ DTO에 문자열 저장
→ valueOf()
→ 다시 enum으로 사용

이번 코드에서는 낙찰방법의 종류와 판정 상태를 따로 관리하기 위해 enum을 사용했다.

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

0개의 댓글