Получить адаптер Моши от универсального Типа - Kotlin - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь настроить адаптер Moshi, чтобы я мог получить любую модель, которую я передаю, как универсальную.Пока что у меня проблемы с получением класса из T generic, IDE говорит Cannot use T as a reified type parameter. Use a class instead.

Есть идеи, как это решить?

val model = getModel<SimpleModel>()    

private fun <T> getModel() : T? {
  val moshi = Moshi.Builder().build()
  val adapter = moshi.adapter<T>(T::class.java)
  return adapter.fromJson("{\"name\": \"this_guy\"}")
}

Спасибо!

1 Ответ

0 голосов
/ 14 сентября 2018

Используйте private inline fun <reified T> getModel(): T в качестве объявления функции.

Объявление параметра типа как reified позволяет получить доступ к его объекту класса.

...