Как получить из Class сам Object

Вызываю БД функцией в нескольких местах

  1. callFunction(call, String::class.java, source)
  2. callFunction(call, MyLogicClass::class.java, source)
  3. 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)
        }
    }
→ Ссылка