我有一个数据源,返回一个列表,可以是三种类型(说类型A,B和C)。上面的所有类型共享2个属性,其余属性特定于类型。我尝试使用该模式。
abstract class Parent (val type: String, val id: String)
和
data class TypeA(override val type: String ... )
data class TypeB(override val type: String ... )
我正在使用Retrofit并尝试将列表反序列化为
List<? extends Parent>
在Kotlin应该是
List<out Parent>
但是,GSON在实例化抽象的父类时抛出了反序列化错误。
java.lang.RuntimeException: Failed to invoke public com.XX.Parent() with no args
我有什么想法可以在Kotlin中实现这个?
我认为你需要添加“extends”修饰符(Kotlin中的“:”)并将参数传递给Parent的构造函数,如下所示:
data class TypeA(override val type: String, val id: String) : Parent(type, id)