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);
'Spring' 카테고리의 다른 글
[Spring] 스웨거 안되는 버전이 너무 많아요! (0) | 2023.12.31 |
---|---|
[Kotlin] 정적 팩토리 메소드 (0) | 2023.12.26 |
[Spring] JPA 사용 시 프록시 객체 사용 주의점 (0) | 2023.12.05 |
[Spring] Contrainerless (0) | 2023.10.25 |
[Spring] 어플리케이션 실행 시 메모리 할당 (0) | 2023.05.15 |
댓글