如何在Java代码和.proto文件之间共享枚举值

我有一个class级,我希望protobuf。 在该类中,其中一个字段是一个枚举(在它自己的类中)。 我可以避免在.proto文件中定义相同的枚举值吗? 或者我是否必须手动确保java代码中的枚举定义与.proto文件中的枚举定义相同?

java代码:

public enum Location { UNDEF(0),HOME(1), WORK(2); ... } 

.proto文件对应的代码:

 message Address{ enum location { UNDEF = 0; HOME = 1; WORK = 2; } optional location addressLocation; ... } 

保持这种状态同步的最佳解决方案通常是代码生成; 确定您的哪些定义是单点真相,并从中创建其他定义。 Protocol Buffers 内置了对Java代码生成的支持,具有诸如自动处理重复枚举值之类的漂亮function。