[英]Behaviour of assignment operator for optional fields in protobuf
我在.proto文件中定义了一条消息。 它有两个字段,必填字段和可选字段。
message Message
{
required int32 requiredField = 1;
optional int32 optionalField = 2;
}
生成的Java代码具有关联的class Message
而我有两个对象oMessage1
和oMessage2
。 oMessage1
在其optionalField
保留一些值,但oMessage2
在其中不保留任何值(作为其可选值)。
我的问题是:
当我执行oMessage1 = oMessage2
, oMessage1 = oMessage2
的optionalField
的值会oMessage1
?
oMessage2
没有它)或 oMessage1
拥有它,因此赋值运算符已注意不要用不存在的字段覆盖它) 我在文档中找不到答案。 生成的代码太大了,无法分析,因为我是Java的新手:(理想情况下,我希望#2是一个答案。但是我想与Protobuf专家进行验证,以便我可以在代码中加以注意。
提前谢谢了!
对于对象变量,Java中的赋值运算符仅分配引用。 oMessage1也将指向由oMessage2表示的对象。 分配后,访问oMessage1与访问oMessage2相同。
如果没有其他内容引用oMessage1引用的协议缓冲区,则它们可能会完全消失(=由garabge collection收集)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.