如何在Kotlin中用GSON实现多态列表反序列化?

问题描述 投票:0回答:1

我有一个数据源,返回一个列表,可以是三种类型(说类型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中实现这个?

android kotlin gson retrofit2 moshi
1个回答
-2
投票

我认为你需要添加“extends”修饰符(Kotlin中的“:”)并将参数传递给Parent的构造函数,如下所示:

data class TypeA(override val type: String, val id: String) : Parent(type, id)
© www.soinside.com 2019 - 2024. All rights reserved.