Как передать класс данных как параметр в расширении kotlin - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть класс данных, например:

data class GetDoctorResponse(
    val BrickName: String,
    val Class: String,
    val DoctorAddress
)

Теперь я хочу получить ответ, поэтому я получаю его так:

val myResponse = Gson().fromJson("response in json", Array<GetDoctorResponse>::class.java).toList()

Мой вопрос: как я могу создать расширение, которое принимает данные и класс и возвращает мне ответ, как указано выше.

я пробовал это:

fun getResponse(data: String, it: Class<T>) : List<it> =
    Gson().fromJson(data, Array<it>::class.java).toList()

но T здесь не разрешена, и я хочу получить ответ любого класса данных я прошло.

val response = getResponse(data, SomeClass())

Ответы [ 2 ]

3 голосов
/ 14 апреля 2020

Вам также нужно пройти тип. Я не проверял это, поэтому дайте мне знать, сработало это или нет.

inline fun <reified T : Any> getResponse(data: String) : List<T> =
        Gson().fromJson(data, Array<T>::class.java).toList()
0 голосов
/ 14 апреля 2020

Спасибо всем, кто помог мне.

я создал это расширение

fun <T> getResponse(data: String, model: Class<Array<T>>): List<T> =
    Gson().fromJson(data, model).toList()

и назвал его

val myResponse = getResponse(data, Array<GetDoctorResponse>::class.java)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...