您的問題背後的原因是代表被存儲爲在合成支持字段既不是標記爲瞬態也不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