Java Protobuf嵌套类对象创建


syntax = "proto3";
package com.test.ps.speed.schema.v0;

message SpeedTestData {
string segment_id = 1;
repeated Speed speed = 2;
message Speed {
double start = 1;                       // Start offset
repeated TimeStampEpoch timestamp_epoch = 3;
repeated TimeStampUtc timestamp_utc = 4;
}
message TimeStampEpoch {
uint64 source_capture_time = 1;         // Time when raw data was captured by Data Provider
uint64 expiry_time = 2;                 // Time when the message expires
}
message TimeStampUtc {
string source_capture_time = 1;         // Time when raw data was captured by Data Provider
string expiry_time = 2;                 // Time when the message expires
}

}

我有上面的原型结构。我想使用Java添加对象,并编写了以下代码。我想加上";TimeStampUtc";以及";TimeStampEpoch";在对象中,但由于嵌套结构,我无法添加。我们将不胜感激。

Java代码:

SpeedTestData.Speed newLastSpeed = SpeedTestData.Speed
.newBuilder().setStart(2) // getting value from other class
.setTimeStampEpoch()  // something like we need to add but could add due to nested structure
.build();

使用set*/add*方法,传递子消息(或子消息的生成器(作为参数:

SpeedTestData.newBuilder()
.addSpeed(
Speed.newBuilder()
.setStart(2)
.setTimestampEpoch(
TimestampEpoch.newBuilder().setSourceCaptureTime(...))
// ...
.build()

您正在定义TimeStampUtc和TimeStampEpoch,但它不是SpeedTestData变量的一部分-这就是为什么没有可以使用的setter方法-它与嵌套无关

将时间戳utc和epoch添加为segment_id和speed等变量,然后重新生成文件

最新更新