maj*_*aja 4 java protocol-buffers
我正在使用protobuf,并且我的一条消息使用该google.protobuf.Timestamp类型。
生成Java代码时,生成的protobuf类使用com.google.protobuf.Timestamp。
有没有办法告诉protobuf使用新的Java 8类型(例如time.Instant)?在使用protobuf的任何地方,我都不想类型转换使我的代码混乱。理想情况下,它是在生成的代码本身内部完成的。
Jay*_*Jay 13
java.time.Instant到com.google.protobuf.Timestamp:com.google.protobuf.Timestamp.newBuilder()
.setSeconds(myInstant.getEpochSecond())
.setNanos(myInstant.getNano());
Run Code Online (Sandbox Code Playgroud)
com.google.protobuf.Timestamp到java.time.Instant:Instant.ofEpochSecond(myProtoTimestamp.getSeconds(), myProtoTimestamp.getNanos());
Run Code Online (Sandbox Code Playgroud)
小智 9
Instant instant = Instant.ofEpochSecond(timestamp.getSeconds(), timestamp.getNanos());
Run Code Online (Sandbox Code Playgroud)
如果有人用 Kotlin 编写,Louis 的答案可以实现为扩展函数,如下所示:
fun Timestamp.toInstant(): Instant = Instant.ofEpochSecond(seconds, nanos.toLong())
Run Code Online (Sandbox Code Playgroud)
然后你就可以做myProto.myTimestampField.toInstant()
| 归档时间: |
|
| 查看次数: |
2896 次 |
| 最近记录: |