protoc编译proto文件之Java源码结构分析一(addr.proto)
来源:互联网 发布:高清网络监控系统方案 编辑:程序博客网 时间:2024/06/08 02:32
一、addr.proto
option java_package = "com.test.protocol";option java_outer_classname = "AddressProto";message Address { optional string province = 1; optional string mayor = 2;}
二、AddressProto.java结构分析
如上图所示,AddressProto.java主要分为三部分:
第一部分:Interface AddressOrBuilder
其中定义了如下结构中各 field 的 getter的接口 方法:
message Address { optional string province = 1; optional string mayor = 2;}
各 getter 接口 方法具体如下:
第二部分
这里是整个AddressProto.java代码的核心部分。
概览如下:
其中可以分为三个部分:
1、Builder
Builder主要完成以下操作:
(1). 实现Interface AddressOrBuilder 各getter接口方法。
(2). 提供 各field的setter方法。
(3). Builder自身构造函数。
(4). 创建Address实例的方法。
2、实现Interface AddressOrBuilde接口并提供重载版本的parseFrom()方法。
3、原型proto文件中各field
原型proto内容:
message Address { optional string province = 1; optional string mayor = 2;}
各field代码:
第三部分:AddressProto类创建函数等
此部分包含AddressProto类创建函数,获取文件描述符等。
三、AddressProto.java完整代码
// Generated by the protocol buffer compiler. DO NOT EDIT!// source: addr.protopackage com.test.protocol;public final class AddressProto { private AddressProto() {} public static void registerAllExtensions( com.google.protobuf.ExtensionRegistry registry) { } public interface AddressOrBuilder extends com.google.protobuf.MessageOrBuilder { // optional string province = 1; /** * <code>optional string province = 1;</code> */ boolean hasProvince(); /** * <code>optional string province = 1;</code> */ java.lang.String getProvince(); /** * <code>optional string province = 1;</code> */ com.google.protobuf.ByteString getProvinceBytes(); // optional string mayor = 2; /** * <code>optional string mayor = 2;</code> */ boolean hasMayor(); /** * <code>optional string mayor = 2;</code> */ java.lang.String getMayor(); /** * <code>optional string mayor = 2;</code> */ com.google.protobuf.ByteString getMayorBytes(); } /** * Protobuf type {@code Address} */ public static final class Address extends com.google.protobuf.GeneratedMessage implements AddressOrBuilder { // Use Address.newBuilder() to construct. private Address(com.google.protobuf.GeneratedMessage.Builder<?> builder) { super(builder); this.unknownFields = builder.getUnknownFields(); } private Address(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } private static final Address defaultInstance; public static Address getDefaultInstance() { return defaultInstance; } public Address getDefaultInstanceForType() { return defaultInstance; } private final com.google.protobuf.UnknownFieldSet unknownFields; @java.lang.Override public final com.google.protobuf.UnknownFieldSet getUnknownFields() { return this.unknownFields; } private Address( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { initFields(); int mutable_bitField0_ = 0; com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); try { boolean done = false; while (!done) { int tag = input.readTag(); switch (tag) { case 0: done = true; break; default: { if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { done = true; } break; } case 10: { bitField0_ |= 0x00000001; province_ = input.readBytes(); break; } case 18: { bitField0_ |= 0x00000002; mayor_ = input.readBytes(); break; } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { throw e.setUnfinishedMessage(this); } catch (java.io.IOException e) { throw new com.google.protobuf.InvalidProtocolBufferException( e.getMessage()).setUnfinishedMessage(this); } finally { this.unknownFields = unknownFields.build(); makeExtensionsImmutable(); } } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.test.protocol.AddressProto.internal_static_Address_descriptor; } protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { return com.test.protocol.AddressProto.internal_static_Address_fieldAccessorTable .ensureFieldAccessorsInitialized( com.test.protocol.AddressProto.Address.class, com.test.protocol.AddressProto.Address.Builder.class); } public static com.google.protobuf.Parser<Address> PARSER = new com.google.protobuf.AbstractParser<Address>() { public Address parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return new Address(input, extensionRegistry); } }; @java.lang.Override public com.google.protobuf.Parser<Address> getParserForType() { return PARSER; } private int bitField0_; // optional string province = 1; public static final int PROVINCE_FIELD_NUMBER = 1; private java.lang.Object province_; /** * <code>optional string province = 1;</code> */ public boolean hasProvince() { return ((bitField0_ & 0x00000001) == 0x00000001); } /** * <code>optional string province = 1;</code> */ public java.lang.String getProvince() { java.lang.Object ref = province_; if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { province_ = s; } return s; } } /** * <code>optional string province = 1;</code> */ public com.google.protobuf.ByteString getProvinceBytes() { java.lang.Object ref = province_; if (ref instanceof java.lang.String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); province_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } // optional string mayor = 2; public static final int MAYOR_FIELD_NUMBER = 2; private java.lang.Object mayor_; /** * <code>optional string mayor = 2;</code> */ public boolean hasMayor() { return ((bitField0_ & 0x00000002) == 0x00000002); } /** * <code>optional string mayor = 2;</code> */ public java.lang.String getMayor() { java.lang.Object ref = mayor_; if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { mayor_ = s; } return s; } } /** * <code>optional string mayor = 2;</code> */ public com.google.protobuf.ByteString getMayorBytes() { java.lang.Object ref = mayor_; if (ref instanceof java.lang.String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); mayor_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } private void initFields() { province_ = ""; mayor_ = ""; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; memoizedIsInitialized = 1; return true; } public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); if (((bitField0_ & 0x00000001) == 0x00000001)) { output.writeBytes(1, getProvinceBytes()); } if (((bitField0_ & 0x00000002) == 0x00000002)) { output.writeBytes(2, getMayorBytes()); } getUnknownFields().writeTo(output); } private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream .computeBytesSize(1, getProvinceBytes()); } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream .computeBytesSize(2, getMayorBytes()); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; } private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } public static com.test.protocol.AddressProto.Address parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } public static com.test.protocol.AddressProto.Address parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } public static com.test.protocol.AddressProto.Address parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } public static com.test.protocol.AddressProto.Address parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } public static com.test.protocol.AddressProto.Address parseFrom(java.io.InputStream input) throws java.io.IOException { return PARSER.parseFrom(input); } public static com.test.protocol.AddressProto.Address parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return PARSER.parseFrom(input, extensionRegistry); } public static com.test.protocol.AddressProto.Address parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return PARSER.parseDelimitedFrom(input); } public static com.test.protocol.AddressProto.Address parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static com.test.protocol.AddressProto.Address parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return PARSER.parseFrom(input); } public static com.test.protocol.AddressProto.Address parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return PARSER.parseFrom(input, extensionRegistry); } public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(com.test.protocol.AddressProto.Address prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } @java.lang.Override protected Builder newBuilderForType( com.google.protobuf.GeneratedMessage.BuilderParent parent) { Builder builder = new Builder(parent); return builder; } /** * Protobuf type {@code Address} */ public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder<Builder> implements com.test.protocol.AddressProto.AddressOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.test.protocol.AddressProto.internal_static_Address_descriptor; } protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { return com.test.protocol.AddressProto.internal_static_Address_fieldAccessorTable .ensureFieldAccessorsInitialized( com.test.protocol.AddressProto.Address.class, com.test.protocol.AddressProto.Address.Builder.class); } // Construct using com.test.protocol.AddressProto.Address.newBuilder() private Builder() { maybeForceBuilderInitialization(); } private Builder( com.google.protobuf.GeneratedMessage.BuilderParent parent) { super(parent); maybeForceBuilderInitialization(); } private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { } } private static Builder create() { return new Builder(); } public Builder clear() { super.clear(); province_ = ""; bitField0_ = (bitField0_ & ~0x00000001); mayor_ = ""; bitField0_ = (bitField0_ & ~0x00000002); return this; } public Builder clone() { return create().mergeFrom(buildPartial()); } public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { return com.test.protocol.AddressProto.internal_static_Address_descriptor; } public com.test.protocol.AddressProto.Address getDefaultInstanceForType() { return com.test.protocol.AddressProto.Address.getDefaultInstance(); } public com.test.protocol.AddressProto.Address build() { com.test.protocol.AddressProto.Address result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } public com.test.protocol.AddressProto.Address buildPartial() { com.test.protocol.AddressProto.Address result = new com.test.protocol.AddressProto.Address(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { to_bitField0_ |= 0x00000001; } result.province_ = province_; if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } result.mayor_ = mayor_; result.bitField0_ = to_bitField0_; onBuilt(); return result; } public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof com.test.protocol.AddressProto.Address) { return mergeFrom((com.test.protocol.AddressProto.Address)other); } else { super.mergeFrom(other); return this; } } public Builder mergeFrom(com.test.protocol.AddressProto.Address other) { if (other == com.test.protocol.AddressProto.Address.getDefaultInstance()) return this; if (other.hasProvince()) { bitField0_ |= 0x00000001; province_ = other.province_; onChanged(); } if (other.hasMayor()) { bitField0_ |= 0x00000002; mayor_ = other.mayor_; onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } public final boolean isInitialized() { return true; } public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { com.test.protocol.AddressProto.Address parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = (com.test.protocol.AddressProto.Address) e.getUnfinishedMessage(); throw e; } finally { if (parsedMessage != null) { mergeFrom(parsedMessage); } } return this; } private int bitField0_; // optional string province = 1; private java.lang.Object province_ = ""; /** * <code>optional string province = 1;</code> */ public boolean hasProvince() { return ((bitField0_ & 0x00000001) == 0x00000001); } /** * <code>optional string province = 1;</code> */ public java.lang.String getProvince() { java.lang.Object ref = province_; if (!(ref instanceof java.lang.String)) { java.lang.String s = ((com.google.protobuf.ByteString) ref) .toStringUtf8(); province_ = s; return s; } else { return (java.lang.String) ref; } } /** * <code>optional string province = 1;</code> */ public com.google.protobuf.ByteString getProvinceBytes() { java.lang.Object ref = province_; if (ref instanceof String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); province_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } /** * <code>optional string province = 1;</code> */ public Builder setProvince( java.lang.String value) { if (value == null) { throw new NullPointerException(); } bitField0_ |= 0x00000001; province_ = value; onChanged(); return this; } /** * <code>optional string province = 1;</code> */ public Builder clearProvince() { bitField0_ = (bitField0_ & ~0x00000001); province_ = getDefaultInstance().getProvince(); onChanged(); return this; } /** * <code>optional string province = 1;</code> */ public Builder setProvinceBytes( com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } bitField0_ |= 0x00000001; province_ = value; onChanged(); return this; } // optional string mayor = 2; private java.lang.Object mayor_ = ""; /** * <code>optional string mayor = 2;</code> */ public boolean hasMayor() { return ((bitField0_ & 0x00000002) == 0x00000002); } /** * <code>optional string mayor = 2;</code> */ public java.lang.String getMayor() { java.lang.Object ref = mayor_; if (!(ref instanceof java.lang.String)) { java.lang.String s = ((com.google.protobuf.ByteString) ref) .toStringUtf8(); mayor_ = s; return s; } else { return (java.lang.String) ref; } } /** * <code>optional string mayor = 2;</code> */ public com.google.protobuf.ByteString getMayorBytes() { java.lang.Object ref = mayor_; if (ref instanceof String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); mayor_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } /** * <code>optional string mayor = 2;</code> */ public Builder setMayor( java.lang.String value) { if (value == null) { throw new NullPointerException(); } bitField0_ |= 0x00000002; mayor_ = value; onChanged(); return this; } /** * <code>optional string mayor = 2;</code> */ public Builder clearMayor() { bitField0_ = (bitField0_ & ~0x00000002); mayor_ = getDefaultInstance().getMayor(); onChanged(); return this; } /** * <code>optional string mayor = 2;</code> */ public Builder setMayorBytes( com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } bitField0_ |= 0x00000002; mayor_ = value; onChanged(); return this; } // @@protoc_insertion_point(builder_scope:Address) } static { defaultInstance = new Address(true); defaultInstance.initFields(); } // @@protoc_insertion_point(class_scope:Address) } private static com.google.protobuf.Descriptors.Descriptor internal_static_Address_descriptor; private static com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_Address_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; } private static com.google.protobuf.Descriptors.FileDescriptor descriptor; static { java.lang.String[] descriptorData = { "\n\naddr.proto\"*\n\007Address\022\020\n\010province\030\001 \001(" + "\t\022\r\n\005mayor\030\002 \001(\tB!\n\021com.test.protocolB\014A" + "ddressProto" }; 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; internal_static_Address_descriptor = getDescriptor().getMessageTypes().get(0); internal_static_Address_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_Address_descriptor, new java.lang.String[] { "Province", "Mayor", }); return null; } }; com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { }, assigner); } // @@protoc_insertion_point(outer_class_scope)}
0 0
- protoc编译proto文件之Java源码结构分析一(addr.proto)
- protoc编译proto文件之Java源码结构分析四(编译proto原型文件)
- protoc编译proto文件之Java源码结构分析二(person.proto)
- protoc编译proto文件之Java源码结构分析三(示例Demo)
- GRPC编译工具protoc-gen-grpc-java编译proto文件的方式
- Caffe源码中caffe.proto文件分析
- INVOKE ADDR PROC PROTO
- Mac:protobuf proto文件编译为Java文件
- proto
- Caffe源码解读(一):caffe.proto(上)
- Google protobuf使用之proto文件编写规则(二)
- protocol .proto文件转.java文件
- 用proto命令生成java文件
- 用proto命令生成java文件
- 用proto命令生成java文件
- protobuf通过.proto文件生成JAVA类
- 运行protoc 把.proto文件生成.pb.go文件,遇到的问题以及解决方案
- 编译caffe.proto
- python \的作用是继续
- Linux ps -ef 排除当前进程(kill当前Tomcat进程)
- KMP算法
- Codeforces 702B - Powers of Two
- 数据结构学习笔记(六)优先级队列、堆和左高树
- protoc编译proto文件之Java源码结构分析一(addr.proto)
- java学习之访问网络资源
- Linux 下设置防火墙白名单(RHEL 6 和 CentOS 7)
- 基于itext7导出pdf实现,支持水印、中文等
- 最长上升子序列
- tcp客户端和服务端互发消息
- java基础学习总结——构造方法
- 电路组成
- 最长连续上升子序列