Я создаю процесс разминки для API, который происходит при запуске.
Метод, с которым мне приходится работать (из другой библиотеки), имеет следующую сигнатуру:
fun getImportantData(pathToData: String): T
На данный момент мне удалось создать Map с нужным мне путем и типом. Я хочу вызвать указанную выше функцию в цикле и убедиться, что значения можно получить. Трудность в том, что я не могу предоставить T при вызове getImportantData. Мой подход ошибочен или есть другой способ, который я не рассматриваю?
https://pl.kotl.in/SDAYyFRoq
Вот почти рабочий пример
fun main() {
data class DataStructure1(val name: String, val secretKey: String) //provided by user
data class DataStructure2(val credential1: String, val credential2: String) // provided by user
val warmThese = mapOf("pathToData" to DataStructure1::class, "pathToData2" to DataStructure2::class)
// user gives me the above structure, so I can warm it up
warmThese.forEach { (path, type) ->
getImportantData() // what is the T here
}
println("Done warmup")
}
fun getImportantData(path: String): T {
// get data and deserialize to T (this is one of the data classes above, it comes from the developer, I cannot know what it is in my code)
println("Finished warm up for: $path")
}
Подробнее здесь: https://stackoverflow.com/questions/786 ... ing-kclass