generics - 从通用类型获取 Moshi 适配器 - Kotlin

标签 generics kotlin moshi

我正在尝试设置一个 Moshi 适配器,以便我可以获得作为通用传递的任何模型。到目前为止,我在从 T generic 获取类时遇到问题,IDE 说 Cannot use T as a reified type parameter。请改用类

有什么解决办法吗?

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\"}")
}

谢谢!

最佳答案

使用 private inline fun <reified T> getModel(): T作为您的函数声明。

将类型参数声明为具体化允许您访问其类对象。

关于generics - 从通用类型获取 Moshi 适配器 - Kotlin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52327492/

相关文章:

c# - 如何检查 MethodInfo 是否匹配泛型 T 的委托(delegate),其中 T 是 Action 还是 Func?

android - Realm + Moshi | @JsonClass无法应用于[class],RealmObject不是Kotlin typepublic

java - 如何让子类返回它们自己的类型?

c# - 是否有合适的设计模式来重构此 C# 代码

c# - 接受 EventHandler<T> 和 EventHandler 的方法

java - 带有 Kotlin 单元测试的 TestContainers PostgreSQLContainer : "Not enough information to infer type variable SELF"

android-recyclerview - Kotlin 适配器中 ViewHolder 中的 SetOnClickListener

java - list 的迭代器同时实现了 Kotlin.Collection.Iterator 和 Java.util.Iterator?

java - 使用 moshi 格式化 json

android - Moshi 将值反序列化为 null