카테고리 없음
코틀린에서 타입 검증 하기
코드닭
2024. 5. 22. 21:23
class ValidationType {
companion object {
inline fun <reified T: Any> validateType(request: Any, modelName: String) {
if (request !is T) {
throw TypeNotMatchException(modelName, T::class.simpleName!!)
}
}
}
}
<reified T: Any> : 제네릭 타입 파라미터 T를 리이파이드(reified)로 지정하여, 런타임에 T의 구체적인 타입 정보를 사용할 수 있게 해준다
제네릭 타입 정보는 컴파일 타임에 지워져서 런타임에 알 수 없는데(타입 소거) reified 키워드를 사용하면 이 제네릭 타입 정보를 런타임에도 유지할 수 있다
// 사용 예시
fun main() {
try {
ValidationType.validateType<String>(123, "TestModel")
} catch (e: TypeNotMatchException) {
println(e.message) // 출력: Type mismatch for TestModel: expected String
}
}
<> 부분에 검증해야할 타입을 적어놓고 request 로 받아온 매개 변수가 <>에 명시한 타입이 아닐 경우 예외 처리를 할 수 있다