如何在protobuf中定义枚举的值和id?(原始java客户端)

Sur*_*kku 4 protocol-buffers proto

我是 protobuf 使用的新手。

我计划编写带有枚举的 protobuf def 。

有什么方法可以在其中提供 id、值和描述。

编译后我希望生成的枚举应该与下面的示例等效

enum Sample{
  W(0, "W"), P(0, "P"), C(0, "C"), B(0, "B")
  private final int id;
  private final String value;

  private Status(int id, String value) {
    this.id= id;
    this.value = value;
  }
}
Run Code Online (Sandbox Code Playgroud)

非常感谢任何帮助。

Ken*_*rda 9

无法在您的示例中准确生成 Java 枚举,但您可以使用“自定义选项”向 protobuf 声明添加任意注释。请参阅文档(向下滚动一点到“自定义选项”)。

import "google/protobuf/descriptor.proto";

extend google.protobuf.EnumValueOptions {
  optional string name = 51234;
}

enum MyEnum {
  FOO = 0 [(name) = "foo"];
  BAR = 1 [(name) = "bar"];
}
Run Code Online (Sandbox Code Playgroud)

注释是通过EnumValueDescriptor接口访问的。

  • 这仅适用于 proto2 语法。如何为 proto3 做同样的事情? (8认同)