728x90
반응형

java.lang.IllegalArgumentException: No enum constant 에러

데이터를 조회하려는데 위의 에러가 뜨면서 조회에 실패했음
분명 enum에 추가되어 있는데 error가 떠서 순간 당황함

 


 

에러 발생 원인 및 해결 방법

enum에 값이 추가되어 있지 않은 경우 발생 → enum에 값을 추가하여 해결!

 


내 코드에는 분명 추가되어 있는데?

그렇다면 값 비교를 잘못했을 가능성이 큼

내 코드를 예시로 들어보자면

 

enum class

public enum ContractStatus {
	request("request", "신청"),
    cancel("cancel", "취소"),
    returnRequest("return_request", "반납신청"),
    ;
    
    ContractStatus(String code, String message) {
        this.code = code;
        this.message = message;
    }

    public String getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    public static ContractStatus findByCode(String code) {
        for (ContractStatus status : values()) {
            if (code.equals(status.code)) {
                return status;
            }
        }
        return null;
    }
}

 

enum을 사용하는 service

String status = "return_request";

ContractStatus contractStatus = ContractStatus.valueOf(status); // error occurred

enum의 value로 returnRequest는 정의되었지만 비교하는 값이 return_request이기 때문에 값을 찾지 못해서 에러 발생

 

code 값으로 enum에서 값을 찾도록 변경 필요 👇

String status = "return_request";

ContractStatus contractStatus = ContractStatus.findByCode(status);
반응형
복사했습니다!