본문 바로가기
Spring

[Java] Enum valueOfOrDefault()

by Nhahan 2023. 2. 28.

String을 Enum으로 변경해줄 때 Enum의 valueOf를 쓰고 try-catch문을 덮는게 일반적이다(없을 시 IllegalArgumentException 던짐).

근데 코드에 try-catch가 들어가면 지저분해지므로 이걸 유틸로 빼보았다.

 

그리고 Enum을 넣어도 null check를 하게 해서 String이나 Enum(null일 경우 대비)을 모두 첫 번째 인자로 넣고, 두 번째 인자로 return 받고 싶은 default 값을 null safe하게 넣게끔 했다.

 

public static <T extends Enum<T>> T valueOfOrDefault(String value, T defaultValue) {
    try {
        return Enum.valueOf(defaultValue.getDeclaringClass(), value);
    } catch (IllegalArgumentException e) {
        return defaultValue;
    }
}

public static <T extends Enum<T>> T valueOfOrDefault(T value, T defaultValue) {
    return value != null ? value : defaultValue;
}

 

 

쓰임 예시)

// String
CustomEnum enumA = valueOfOrDefault(someClass.getStringValue, CustomEnum.Default)

// Enum (null check)
CustomEnum enumB = valueOfOrDefault(someClass.getCustomEnumName, CustomEnum.Default);

 

 

댓글