我有一个对象,该对象扩展了继承接口的抽象类。使用Kotlin序列化时,它不会序列化抽象类上的属性。 例如:
@Serializable
class User(private val uid: String): BaseClass()
abstract class BaseClass(): CacheClass {
override val cacheDate: Long = 0L
}
interface CacheClass {
val cacheDate: Long
}
变量cacheDate
将永远不会序列化。如何确保抽象类上定义的变量实际上将被序列化?
我不是要使用其他库。我正在使用发现here
答案 0 :(得分:0)
来自https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/examples.md:
支持的属性:
类构造函数的val和var属性。构造函数仅具有属性(没有参数)是必需的。
如果使用内部序列化(类上有@Serializable注释),则主体val和var都具有可见度级别。
但是cacheDate
都不是;它是没有@Serializable
的超类的body属性。您可以尝试注释超类,但基于the proposal中的描述,我希望它不起作用。如果没有,write a custom serializer。