gpt4 book ai didi

serialization - Kotlin 中的单例序列化

转载 作者:行者123 更新时间:2023-12-01 03:22:07 25 4
gpt4 key购买 nike

我想知道在 Kotlin 中是否可以反序列化(恢复属性值)声明的对象,无需手动分配属性或诉诸反射 .以下代码段进一步解释了:

object Foo: Serializable {
var propOne: String = ""
// ...

fun persist() {
serialize(this)
// no problem with serialization
}

fun restore(bytes: ByteArray) {

val fooObj: Foo = deserialize(bytes) as Foo
// It seems Kotlin allows us to use singleton as type!

// obvioulsly either of the following is wrong:
// this = fooObj
// Foo = fooObj

// ... is there a way to 'recover' the singleton (object) other than
// manual assignment of properties (or reflection) ???
}
}

最佳答案

无法将全局引用重新分配给具有新实例的单例。最多可以在序列化过程中写出属性,然后在反序列化时直接读取属性并改变原始对象中的状态。您需要自定义代码才能通过直接分配或反射将属性分配给对象。如果您制作自己的单例机制来保存一个实例,您可以将其替换为反序列化的另一个实例,这会更好。

关于serialization - Kotlin 中的单例序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44411764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com