Protobuf 中的默认枚举值是什么?
2022-09-02 03:28:42
您好 与Java一起使用的Google协议缓冲区中的默认枚举值(如果未定义任何默认值)是什么?
您好 与Java一起使用的Google协议缓冲区中的默认枚举值(如果未定义任何默认值)是什么?
它是以 .proto 顺序定义的第一个。
从 .proto 语言指南(因为所有实现都使用相同的逻辑在这里):
可选字段和默认值
(截图)对于枚举,默认值是枚举的类型定义中列出的第一个值。
从官方规格:
可选:该字段可能已设置,也可能未设置。如果未设置可选字段值,则使用默认值。对于简单类型,您可以指定自己的默认值,就像我们在示例中对电话号码类型所做的那样。否则,将使用系统默认值:数字类型为零,字符串为空字符串,bools 为 false。对于嵌入消息,默认值始终是消息的“默认实例”或“原型”,其中未设置任何字段。调用访问器以获取尚未显式设置的可选(或必需)字段的值始终返回该字段的默认值。
您可以按如下方式设置默认值:
optional PhoneType type = 2 [default = HOME];