如何导入内部 protobuf 消息?
How to import internal protobuf messages?
我读到在 proto3 中,他们删除了知道是否设置了字段的能力。作为一种解决方案,我在几个网站上都读到了,您可以将原语嵌入到包装消息中。
如您所见here, protobuf has some internal packages under wrappers.proto,以便完全满足我的需要。
我可以将 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
你可以,而且可能比单独创建它们更可取 - 尽管请注意,子消息会增加二进制大小和处理的一些开销,并且与使用 [= 的 proto2 消息不兼容11=] 字段来实现同样的事情。 "wrappers.proto" 应该已经在 protoc 的二进制位置下可用;典型用法可能是:
syntax = "proto3";
import "google/protobuf/wrappers.proto";
message Foo {
.google.protobuf.Int32Value foo = 1;
}
使用 "wrappers.proto" 而不是自己重新实现它的另一个好处是,它将被视为具有定制 JSON 处理和更好的 "any" 支持的 "well-known type" .
我读到在 proto3 中,他们删除了知道是否设置了字段的能力。作为一种解决方案,我在几个网站上都读到了,您可以将原语嵌入到包装消息中。
如您所见here, protobuf has some internal packages under wrappers.proto,以便完全满足我的需要。
我可以将 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
你可以,而且可能比单独创建它们更可取 - 尽管请注意,子消息会增加二进制大小和处理的一些开销,并且与使用 [= 的 proto2 消息不兼容11=] 字段来实现同样的事情。 "wrappers.proto" 应该已经在 protoc 的二进制位置下可用;典型用法可能是:
syntax = "proto3";
import "google/protobuf/wrappers.proto";
message Foo {
.google.protobuf.Int32Value foo = 1;
}
使用 "wrappers.proto" 而不是自己重新实现它的另一个好处是,它将被视为具有定制 JSON 处理和更好的 "any" 支持的 "well-known type" .