Синтаксическая сериализация в Котлине

Мне интересно, можно ли в 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) ??? } } 

Невозможно переназначить глобальную ссылку на одноэлемент с новым экземпляром. В лучшем случае вы можете выписать свойства во время сериализации, а затем при десериализации непосредственно прочитать свойства и изменить состояние в исходном объекте. Для этого вам потребуется специальный код для назначения свойств объекту либо путем прямого назначения, либо отражения. Было бы лучше, если бы вы создали свой собственный механизм singleton, в котором есть экземпляр, который вы можете заменить, чтобы быть другим экземпляром, который вы deserialize.