我的.proto文件中定义了消息Message。它有两个字段,一个必填字段和一个可选字段。
message Message
{
required int32 requiredField = 1;
optional int32 optionalField = 2;
}
生成的Java代码具有关联的class Message
,我有两个对象oMessage1
& oMessage2
。 oMessage1
在其optionalField
中保留了一些值,但oMessage2
未保留任何值(作为其可选项)。
我的问题是:
当我执行oMessage1 = oMessage2
时,optionalField
oMessage1
的值会发生什么变化?
oMessage2
没有它)
OR oMessage1
拥有,因此赋值运算符已经注意不要用不存在的字段覆盖它)我在文档中找不到答案。生成的代码对我来说太大了,因为我对Java相对较新:(理想情况下,我期待#2是一个答案。但我想与Protobuf专家核实,以便我可以在我的代码中处理它。< / p>
非常感谢提前!
答案 0 :(得分:1)
对于对象变量,Java中的赋值运算符只分配引用。 oMessage1也将指向oMessage2表示的对象。访问oMessage1与分配后访问oMessage2相同。
oMessage1引用的协议缓冲区可能会完全消失(=由garabge集合收集),如果没有其他内容可以引用它。