小编Muk*_*oki的帖子

通用接口的 Kotlin 序列化

尝试 kotlin 1.4.32 / 序列化 1.1.0 (和 kotlin 1.5.0 / 序列化 1.2.0) 我找不到序列化以下类层次结构的方法

interface Range<T:Comparable<T>>

@Serializable @SerialName("range")
class SimpleRange<T:Comparable<T>>: Range<T>

@Serializable @SerialName("multirange")
class MultiRange<T:Comparable<T>>: Range<T>
Run Code Online (Sandbox Code Playgroud)

我可以使用 SerializersModule序列化 a SimpleRange<Double>(声明为 a ),包括Range<Double>

polymorphic(Range::class) {
    subclass(SimpleRange.serializer(Double.serializer()))
}
Run Code Online (Sandbox Code Playgroud)

但我找不到一种方法来配置模块,使其可以序列化/反序列化一个SingleRange<Double>或一个SingleRange<Int>或一个MultiRange<String>或我可以在 SerializersModule 中声明的任何组合。例如,如果我添加subclass(SimpleRange.serializer(Int.serializer())到前一个,我会得到一个SerializerAlreadyRegisteredException

kotlin

3
推荐指数
1
解决办法
5294
查看次数

标签 统计

kotlin ×1