You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Protocol Buffers消息?及在Protobuf中添加long类型字段

关于Protocol Buffers消息编写与long类型字段的实现

一、编写Protocol Buffers消息的基本流程

  • 创建后缀为.proto的定义文件,这是Protobuf的核心配置文件
  • 在文件开头声明Protobuf版本,常用的是syntax = "proto3";(或syntax = "proto2";,两者特性有差异)
  • 使用message关键字定义消息类型,每个消息可以包含多个字段
  • 为每个字段指定类型、唯一字段编号和名称,字段编号用于二进制编码,不可重复
  • 可添加额外配置选项,比如指定生成Java类的包名、类名等

二、添加long类型字段的实现

Protobuf中与Java Long对应的类型是int64(有符号)或uint64(无符号)。结合你给出的Java示例:

public class Dummy implements Serializable {

    @Field("my_id")
    @JsonProperty("my_id")
    private Long myId;
}

对应的Protobuf定义如下:

syntax = "proto3";

// 指定生成Java类的包路径
option java_package = "com.yourpackage";
// 指定生成的外层类名
option java_outer_classname = "DummyProto";

message Dummy {
    // 对应Java中的Long myId,json_name指定JSON序列化字段名
    int64 my_id = 1 [json_name = "my_id", java_type = "java.lang.Long"];
}

关键说明:

  • int64是Protobuf的原生类型,默认生成Java的long基本类型;添加java_type = "java.lang.Long"选项后,会生成Long包装类,和示例中的字段类型匹配
  • json_name = "my_id"配置对应Java代码中的@JsonProperty("my_id"),保证JSON序列化时的字段名一致
  • 字段编号1是必填项,范围1-536870911,建议预留部分编号用于后续扩展

生成Java代码

使用Protobuf编译器protoc生成对应代码,命令示例:

protoc --java_out=./src/main/java ./dummy.proto

生成的Java类会自动实现Protobuf的序列化逻辑,无需手动实现Serializable接口。

内容的提问来源于stack exchange,提问作者javed alam khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 01:18:15