Как получить из Class
Вызываю БД функцией в нескольких местах
- callFunction(call, String::class.java, source)
- callFunction(call, MyLogicClass::class.java, source)
- callFunction(call, Long::class.java, source)
сама функция вида
private fun <T : Class<*>> callFunction(call: SimpleJdbcCall, targetClass: T, mapParams: MapSqlParameterSource): T {
try {
return call.executeFunction(targetClass::class.java, mapParams) as T
} catch (e: Exception) {
log.error(e.message)
throw doWithException(e)
}
}
все вызовы показывают ошибку
Type inference failed. Expected type mismatch:
required:
String
found:
Class<String>
или
Type inference failed. Expected type mismatch: required: MyLogicClass found: Class
как верно написать функцию чтобы возвращался нужный targetClass: T?
Ответы (1 шт):
Автор решения: Padawan
→ Ссылка
я переписал функцию вот так. стало работать
private inline fun <reified T : Any>(call: SimpleJdbcCall, targetClass: Class<T>, mapParams: MapSqlParameterSource): T {
try {
return call.executeFunction(targetClass::class.java, mapParams) as T
} catch (e: Exception) {
log.error(e.message)
throw doWithException(e)
}
}