生成的Google Protocol Buffer类有未使用的字段,并且超过2000行



正如标题所说,我想尝试谷歌协议缓冲区,但卡住了从。proto文件编译类。我不确定应该如何生成类看起来像,它是正常的,它包含2500行。

这是maven项目,我包含了以下依赖项:

    <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java</artifactId>
        <version>2.6.1</version>
    </dependency>

和protoc.exe与.proto文件在同一目录。

我下面的例子从谷歌文档,然而,当我试图编译addressbook.proto,生成的类有超过2500行和未使用的字段,如:int mutable_bitField0_ = 0;

生成的代码看起来很奇怪,里面有这样的东西:

 com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
          public com.google.protobuf.ExtensionRegistry assignDescriptors(
              com.google.protobuf.Descriptors.FileDescriptor root) {
            descriptor = root;
            return null;
          }

应该生成类看起来像这样还是我做错了什么?

请注意,使用的java版本是8.

是的,生成的代码非常大而且非常难看。这是生成代码的典型情况。.proto文件中的每个字段声明都变成了六个或更多的方法,每个方法都是几行,加上序列化,解析,清除等代码行,2500行对于protobuf生成的代码来说实际上是非常小的。

代码生成器不是很智能——它基本上是一堆打印语句——所以它经常生成丑陋的代码,有时它甚至会生成它最终不会使用的样板文件。

您确实不需要查看生成的代码。:)

最新更新