Published 2023. 3. 2. 20:19
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);
반응형