当前位置: 首页 > 面试题库 >

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

梁楷
2023-03-14
问题内容

我有一堂课要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;
...
}

问题答案:

保持此类同步的最佳解决方案通常是代码生成。确定您的定义中的哪一个是真相,然后从中创建其他定义。协议缓冲区内置了对Java代码生成的内置支持,并具有诸如自动处理重复的枚举值之类的漂亮功能。



 类似资料:
  • 问题内容: 我正在使用JavaScript客户端(在浏览器中运行)和Node.js服务器创建一个小型应用程序,并使用WebSocket进行通信。 我想在客户端和服务器之间共享代码。至少可以说,我才刚刚开始使用Node.js,而我对现代JavaScript的了解还有些生疏。因此,我仍然对CommonJS require()函数有所了解。如果我使用“导出”对象创建程序包,那么我将看不到如何在浏览器中使

  • null 在列出的3个选项中,只有最后一个可以使用projectile(可能还有其他Emacs包)。但我需要能够访问/修改文件从Windows以及,所以这不是一个可行的选择。 有没有人为此找到好的解决方案?

  • 问题内容: 我正在使用Google App Engine的Go运行时,并且有两个模块。我想在它们之间共享HTML模板,但不是最好的方法。 我的模块组织如下: 在我的情况下,和相同。如何在两个模块之间共享它而不必像现在那样复制文件? 我想放入一个目录, 但我相信这两者都不是,也不能访问该文件,因为它不在模块文件的同一目录或子目录中。我唯一的选择是在每个模块的模板目录之间符号链接文件吗? 问题答案:

  • 问题内容: main.js total.js add.js remove.js console.log 背景: 我有一个应用程序(irc bot),我想添加一个功能,使偷看者可以执行@add 1或@remove1。我有一个main.js,然后根据所说的触发器需要不同的文件。因此,add将触发add.js文件,然后将需要require(’main.js’)并添加10(为简化起见,为10,它将解析该数

  • 问题内容: 我在Linux上有两个进程A和B。我想与进程B共享进程A的文件描述符,现在我只是将其序列化为a 并将其传递给参数,但这是行不通的。 Ac看起来像这样: BC看起来像这样: 但这是行不通的,我也不明白为什么不这样做。我该如何进行这项工作?如果它的工作原理,它是经过共享父母和孩子之间的文件描述符的最佳解决方案和一个? 更新资料 该问题与我提出的问题无关,这是由@OliCharleswort

  • 如果您在组织中使用微服务架构,它们可以通过zookeeper或其等价物共享配置。但是,不同的服务应该如何共享一个公共的db模式呢?公共常数?和常用的公用设施? 在微服务之间共享代码和模式的一种可伸缩、高效、实用且有希望是美丽的方法是什么?