java - 如何在构建消息之前在 protobuf 中设置重复字段?

标签 java protocol-buffers

假设我有一条包含重复字段的消息:

Message Foo {
    repeated Bar bar = 1;
}

现在我想将 n 个 Bar 对象插入到字段 bar 中,每个对象都是在一个循环中创建的。

for (i=0; i < n; i++){
    //Add Bar into foo
}
//Build foo after loop

这是否可能,或者我是否需要在构建 foo 对象之前同时需要所有 n bar 字段?

最佳答案

当您使用 protoc 命令生成 java 对象时,它将创建一个 Foo 对象,该对象将拥有自己的构建器方法。

你最终会做这样的事情

//Creates the builder object 
Builder builder = Package.Foo.newBuilder();
//populate the repeated field.
builder.addAll(new ArrayList<Bar>());
//This should build out a Foo object
builder.build(); 

要添加单个对象,您可以这样做。

    Bar bar = new Bar();
    builder.addBar(bar);
    builder.build();

使用您请求的用例进行编辑。

关于java - 如何在构建消息之前在 protobuf 中设置重复字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29170183/

相关文章:

java登录系统

java - 使用带有 OCI 驱动程序的 OracleDataSource 获取失效连接

go - 如何访问 proto.EnumValueOptions 扩展值

c# - protobuf-net 从磁盘流对象

Avro 与 Protobuf 的性能指标

java - 转换为 Array 时 Set 项的排序顺序

java - Spring启动Apache kafka Binder 项目,application.properties spring.cloud.stream.kafka.binder。 jaas 属性未知

java - 如何为字符串的特定部分着色

go - 将 Golang1.11 与模块一起使用时,Protobuf 导入 "cannot find file"

serialization - 使用 ProtoBuf 时最好的加密方法是什么?