【问题标题】:how to use protobuf compile java specifity enum如何使用 protobuf 编译 java 特定枚举
【发布时间】:2019-08-03 05:28:50
【问题描述】:

当我使用 protobuf 编译 java 特定枚举时,我的 enum.proto 代码:

enum QosP{

    AT_MOST_ONCE = 0;
    AT_LEAST_ONCE = 1;
    EXACTLY_ONCE = 2;

    required int32 val = AT_MOST_ONCE.value;
}

我总是得到一个错误,如下:枚举常量缺少数值。 required int32 val 总是无法编译。plz 我需要帮助。

我尝试使用proto2和proto3编译,发现很多文件,但解决了这个问题。

我想使用protobuf comiple java enum,结构如下:

enum QosP{

    AT_MOST_ONCE = 0;
    AT_LEAST_ONCE = 1;
    EXACTLY_ONCE = 2;

    required int32 val = AT_MOST_ONCE.value;

}

【问题讨论】:

    标签: java enums protocol-buffers


    【解决方案1】:

    枚举的声明和使用应该分开进行。

    首先将枚举声明为类型:

    enum QosP {
        AT_MOST_ONCE = 0;
        AT_LEAST_ONCE = 1;
        EXACTLY_ONCE = 2;
    }
    

    然后使用枚举来定义字段的类型。也可以定义默认值:

    message Something {
        QosP val = 1 [default = AT_LEAST_ONCE];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      相关资源
      最近更新 更多