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等变量,然后重新生成文件