解析消息时,如果编码消息不包含特定的单数元素,则解析对象中的相应字段将设置为该字段的默认值。这些默认值是特定于类型的:
-
对于字符串,默认值为空字符串。
-
对于字节,默认值为空字节。
-
对于布尔,默认值为false。
-
对于数字类型,默认值为零。
-
对于枚举,默认值是第一个定义的枚举值,必须为0。
-
对于消息字段,该字段未设置。它的确切值取决于语言。有关详细信息,请参见生成的代码指南。
重复字段的默认值为空(通常是相应语言的空列表)。
请注意,对于标量消息字段,一旦消息被解析,就无法判断字段是显式设置为默认值(例如,布尔值是否设置为false )还是根本没有设置:定义消息类型时应该记住这一点。例如,如果不希望默认情况下也发生某些行为,不要有一个布尔值在设置为false时打开该行为。另请注意,如果标量消息字段设置为默认值,则不会在线路上序列化该值。
注: 如果类型为string, 当为null时不做set操作操作解析时默认"",如果做了set操作,则无法进行setXXX(null)
有关默认如何在生成的代码中工作的详细信息,请参阅所选语言的生成代码指南。