我已经阅读了proto3中的内容,他们删除了知道是否设置了字段的功能。作为解决方案,我已经阅读了多个站点,您可以将原语嵌入包装消息中。
如您所见,在here下具有一些内部软件包,以完全满足我的需要。
我可以将该wrappers.proto文件复制并粘贴到我的系统中,然后从另一个文件A.proto导入它以使用它们。
但是我想知道:
使用其内部包装器是一个不错的选择吗?
如果是这样,我可以直接从他们的jar中导入而不是创建自己的文件副本吗?
(我尝试使用其jar目录导入,但没有用)
import "lib/protobuf-java-3.5.0.jar/com/protobuf/wrappers.proto"; --> fails
而:
import "resources/protoBeans/wrappers.proto"; --> my own copy --> works
最佳答案
您可以,最好单独创建它们-尽管请注意,子消息会增加二进制文件大小和处理的开销,并且与使用optional
字段来实现一样。 “ wrappers.proto”应该已经在protoc的二进制位置下可用;典型用法可能是:
syntax = "proto3";
import "google/protobuf/wrappers.proto";
message Foo {
.google.protobuf.Int32Value foo = 1;
}
使用“ wrappers.proto”而不是自己重新实现的另一个好处是,它将通过定制的JSON处理和更好的“ any”支持被视为“知名类型”。