您的问题背后的原因是代表被存储为在合成支持字段既不是标记为瞬态也不serialziable阵列,所以它防止了序列化。然而,仅仅用@Transient标记属性可能会破坏你的序列化表单。 和所有
可能无法正常工作前JetBrains公司决定做一个最终解决这个问题,你应该使用writeReplace
和readResolve
覆盖缺省的序列化机制。我在下面提供的样品溶液:
class Pizza(name: String?) : Serializable {
@Transient var name: String? by Delegates.observable(name)
private fun writeReplace(stream: ObjectOutputStream): Object = SerialProxy(name)
private class SerialProxy(var name: String): Serializable {
private fun readResolve(): Object = Pizza(name)
}
}
的readObject()/ writeObject()可以不工作,因为你没有办法来设置委托构造函数,而无需使用反射调用后。
我无法编译你的代码,'Serializable'是'internal','Delegates.observable'需要2个参数。 –
对不起,这是一段代码的摘录,我将添加第二个参数。 – Pin