Kotlin. Android. Проблемы с переменной-классом

Я недавно начал изучать Kotlin, до этого довольно долго работал на Python. И при попытке создать свое первое приложение у меня возникла проблема. Я хотел написать вспомогательный класс для взаимодействия с API, я хотел сделать его универсальным и абстрактным, но я не могу понять, как передать класс, определенный переменной, в функцию с <>, и я не совсем уверен, что я правильно получаю класс переменной в функции, можете ли вы мне помочь?

package com.example.dndhelper.DataClasses

import android.content.Context
import android.util.Log
import android.widget.Toast
import com.android.volley.Request
import com.android.volley.toolbox.StringRequest
import com.android.volley.toolbox.Volley
import com.beust.klaxon.Klaxon
import com.example.dndhelper.DataClasses.Spells.SpellsResponse
import org.json.JSONObject

class UrlHelper() {
    fun get(context: Context , url: String, dataClass: Any) {
        val response: String = getResponse(context, url)
        val json: JSONObject = parseSpells(response, dataClass)

}

fun getResponse(context: Context, url: String): String {
    var output: String = ""

    val queue = Volley.newRequestQueue(context)
    val stringRequest = StringRequest(
        Request.Method.GET,
        url,
        {response->output = response},
        { Log.d("MyLog", "ValleyError: $it")},
    )

    queue.add(stringRequest)

    return output
}

fun parseSpells(response: String, dataClass: Any): JSONObject {
    // -------------------------------\/
    val json = Klaxon().parseArray</**?**/>(response)
    return json
}

Немного уточню вопрос еще раз. Можно ли в <> передавать класс определенный переменной, то есть записать например AbstractClass::class в переменную, и потом в другой части кода передать в <>? Я пытался сделать что-то вроде...

    fun parseSpells(response: String, dataClass: Any) {
    val json = Klaxon().parse<dataClass>(response)
}

... но это не работает


Ответы (1 шт):

Автор решения: denis0001-dev

Можно использовать типовой аргумент:

fun <T> parseSpells(response: String, dataClass: KClass<T>) {
    val json = Klaxon().parse<T>(response) 
}
→ Ссылка