Alp*_*ren 9 protocol-buffers kotlin
我有这样的协议缓冲区定义:
package com.asd;
enum AType {
A1 = 0;
A2 = 1;
Unknown = 2;
}
enum BType {
B1 = 0;
B2 = 1;
Unknown = 2;
}
Run Code Online (Sandbox Code Playgroud)
编译时,我收到此错误:
“com.asd”中已定义“未知”。请注意,枚举值使用 C++ 作用域规则,这意味着枚举值是其类型的同级,而不是其子级。因此,“Other”在“com.asd”中必须是唯一的,而不仅仅是在“BType”中。
除了使用不同的包之外,还有解决此问题的方法吗?
Alp*_*ren 12
我相信没有直接的方法可以在同一个包中使用相同的枚举值,但有两种解决方法(链接):
使用前缀:
package com.asd;
enum AType {
AType_A1 = 0;
AType_A2 = 1;
AType_Unknown = 2;
}
enum BType {
BType_B1 = 0;
BType_B2 = 1;
BType_Unknown = 2;
}
Run Code Online (Sandbox Code Playgroud)
将枚举放在不同的消息中:
message ATypeMessage{
enum AType{
A1 = 0;
A2 = 1;
Unknown = 2;
}
}
message BTypeMessage{
enum BType{
B1 = 0;
B2 = 1;
Unknown = 2;
}
}
Run Code Online (Sandbox Code Playgroud)
我没有足够的声誉来发表此评论,我的建议是一个可能不起作用的黑客。option allow_alias = true;
但是您是否尝试过在两者中添加
enum并使用相同的值。
参考: https: //developers.google.com/protocol-buffers/docs/proto#enum
| 归档时间: |
|
| 查看次数: |
9807 次 |
| 最近记录: |