假设我在Java中定义了以下枚举:
public enum DogBreed {
GERMAN_SHEPHERD,
FRENCH_BULLDOG,
...
}
public enum Dog {
MAX(DogBreed.GERMAN_SHEPHERD),
SCOOTER(DogBreed.FRENCH_BULLDOG),
...
private final DogBreed breed;
}
在原型文件中描述DogBreed
很简单,但我无法找到描述Dog
枚举的方法。
答案 0 :(得分:0)
借助我在评论中链接的答案,我能够编写以下原型文件:
import "google/protobuf/descriptor.proto";
extend google.protobuf.EnumValueOptions {
DogMessage.DogBreed dogBreed = 51234;
}
message DogMessage {
enum DogBreed {
GERMAN_SHEPHERD = 0;
FRENCH_BULLDOG = 1;
}
enum Dog {
MAX = 0 [(dogBreed) = GERMAN_SHEPHERD];
SCOOTER = 1 [(dogBreed) = FRENCH_BULLDOG];
}
}
然后可以使用dogBreed
getValueDescriptor.getOptions()
的值
然而我意识到我实际上最终并不需要它。我试图完全复制我的数据模型类。那是因为我来自杰克逊的JSON序列化世界,您可以在其中发送和接收您的数据模型类。 但是由于protobuf使用了一个中间表示类,我不妨写下以下内容:
message DogMessage {
string dogName = 0;
string dogBreed = 1;
}
我将能够根据另一方的字符串值重建我的数据模型枚举。
感谢您查看此内容
编辑:进一步实现:Dog
枚举是由什么构成的并不重要。只要我传输其中一个值(MAX,SCOOTER),我就能够根据这个单值重新完成枚举。