正如标题所说,我想尝试使用 Google protocol buffers,但在从 .proto 文件编译类时遇到了困难。我不确定生成的类应该是什么样子,它包含 2500 行是否正常。
这是 Maven 项目,我包含了以下依赖项:
com.google.protobuf
protobuf-java
2.6.1
并且 protoc.exe 与 .proto 文件在同一目录中。
我正在关注 google docs 中的示例,但是当我尝试编译 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 生成的代码。
代码生成器不是很智能——它基本上是一堆打印语句——所以它经常会生成丑陋的代码,有时它甚至会生成它最终不会使用的样板。
您真的不需要查看生成的代码。 :)
Tôi là một lập trình viên xuất sắc, rất giỏi!