0
我们使用协议缓冲区将数据存储在数据库中(作为blob)。在某个时候,我们再次阅读它们,需要修改它们并再次存储它们。将Google协议缓冲区消息的结构复制到构建器对象的结构中
问题是,协议缓冲区消息对象是不可变的。我们想到的仅仅是使用协议缓冲区信息作为原型创建一个新的构建器对象:
Foo.Builder.newBuilder(prototype)
这基本上可行。但是因为我们有一个嵌套结构,所以原型对象实际上包含属性,它们本身就是消息,这是行不通的。摘自the documentation:
由于嵌入式消息和字符串对象是不可变的,它们在原始文件和副本之间共享。
有没有办法将整个结构克隆到可变的新建设者对象?