当前位置: 首页 > wzjs >正文

买网站送域名成都百度推广公司联系电话

买网站送域名,成都百度推广公司联系电话,湖南营销型网站建设公司排名,站群管理系统测试3.20.3的protoc编译后的proto2和proto3版本文件是否可以正常使用 背景 在工作中发现,有同学在使用protoc把proto文件转成java文件以后,有些字段前面会添加路径,在某个PR里面特意把前面的路径删除掉了,所以为了验证路径是否会…

测试3.20.3的protoc编译后的proto2和proto3版本文件是否可以正常使用

背景

在工作中发现,有同学在使用protoc把proto文件转成java文件以后,有些字段前面会添加路径,在某个PR里面特意把前面的路径删除掉了,所以为了验证路径是否会对java文件的使用产生影响,写了个简单的demo进行验证。

代码

proto代码

// test2.proto
syntax = "proto2";
package example;message Person {required string name = 1;optional int32 age = 2 [default = 18];
}
// test3.proto
syntax = "proto3";
package example;message Person {string name = 1;int32 age = 2;
}

使用protoc进行转换:
protoc版本:3.20.3
转换代码:

protoc --java_out=./out test2.proto
protoc --java_out=./out test3.proto

转换结果:

// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: test2.protopackage com.test.protobuf.out.example;public final class Test2 {private Test2() {}public static void registerAllExtensions(com.google.protobuf.ExtensionRegistryLite registry) {}public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry registry) {registerAllExtensions((com.google.protobuf.ExtensionRegistryLite) registry);}public interface PersonOrBuilder extends// @@protoc_insertion_point(interface_extends:com.test.protobuf.out.example.Person)com.google.protobuf.MessageOrBuilder {/*** <code>required string name = 1;</code>* @return Whether the name field is set.*/boolean hasName();/*** <code>required string name = 1;</code>* @return The name.*/java.lang.String getName();/*** <code>required string name = 1;</code>* @return The bytes for name.*/com.google.protobuf.ByteStringgetNameBytes();/*** <code>optional int32 age = 2 [default = 18];</code>* @return Whether the age field is set.*/boolean hasAge();/*** <code>optional int32 age = 2 [default = 18];</code>* @return The age.*/int getAge();}/*** Protobuf type {@code com.test.protobuf.out.example.Person}*/public static final class Person extendscom.google.protobuf.GeneratedMessageV3 implements// @@protoc_insertion_point(message_implements:com.test.protobuf.out.example.Person)PersonOrBuilder {private static final long serialVersionUID = 0L;// Use Person.newBuilder() to construct.private Person(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {super(builder);}private Person() {name_ = "";age_ = 18;}@java.lang.Override@SuppressWarnings({"unused"})protected java.lang.Object newInstance(UnusedPrivateParameter unused) {return new Person();}@java.lang.Overridepublic final com.google.protobuf.UnknownFieldSetgetUnknownFields() {return this.unknownFields;}public static final com.google.protobuf.Descriptors.DescriptorgetDescriptor() {return com.test.protobuf.out.example.Test2.internal_static_example_Person_descriptor;}@java.lang.Overrideprotected com.google.protobuf.GeneratedMessageV3.FieldAccessorTableinternalGetFieldAccessorTable() {return com.test.protobuf.out.example.Test2.internal_static_example_Person_fieldAccessorTable.ensureFieldAccessorsInitialized(com.test.protobuf.out.example.Test2.Person.class, com.test.protobuf.out.example.Test2.Person.Builder.class);}private int bitField0_;public static final int NAME_FIELD_NUMBER = 1;private volatile java.lang.Object name_;/*** <code>required string name = 1;</code>* @return Whether the name field is set.*/@java.lang.Overridepublic boolean hasName() {return ((bitField0_ & 0x00000001) != 0);}/*** <code>required string name = 1;</code>* @return The name.*/@java.lang.Overridepublic java.lang.String getName() {java.lang.Object ref = name_;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()) {name_ = s;}return s;}}/*** <code>required string name = 1;</code>* @return The bytes for name.*/@java.lang.Overridepublic com.google.protobuf.ByteStringgetNameBytes() {java.lang.Object ref = name_;if (ref instanceof java.lang.String) {com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);name_ = b;return b;} else {return (com.google.protobuf.ByteString) ref;}}public static final int AGE_FIELD_NUMBER = 2;private int age_;/*** <code>optional int32 age = 2 [default = 18];</code>* @return Whether the age field is set.*/@java.lang.Overridepublic boolean hasAge() {return ((bitField0_ & 0x00000002) != 0);}/*** <code>optional int32 age = 2 [default = 18];</code>* @return The age.*/@java.lang.Overridepublic int getAge() {return age_;}private byte memoizedIsInitialized = -1;@java.lang.Overridepublic final boolean isInitialized() {byte isInitialized = memoizedIsInitialized;if (isInitialized == 1) return true;if (isInitialized == 0) return false;if (!hasName()) {memoizedIsInitialized = 0;return false;}memoizedIsInitialized = 1;return true;}@java.lang.Overridepublic void writeTo(com.google.protobuf.CodedOutputStream output)throws java.io.IOException {if (((bitField0_ & 0x00000001) != 0)) {com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);}if (((bitField0_ & 0x00000002) != 0)) {output.writeInt32(2, age_);}getUnknownFields().writeTo(output);}@java.lang.Overridepublic int getSerializedSize() {int size = memoizedSize;if (size != -1) return size;size = 0;if (((bitField0_ & 0x00000001) != 0)) {size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);}if (((bitField0_ & 0x00000002) != 0)) {size += com.google.protobuf.CodedOutputStream.computeInt32Size(2, age_);}size += getUnknownFields().getSerializedSize();memoizedSize = size;return size;}@java.lang.Overridepublic boolean equals(final java.lang.Object obj) {if (obj == this) {return true;}if (!(obj instanceof com.test.protobuf.out.example.Test2.Person)) {return super.equals(obj);}com.test.protobuf.out.example.Test2.Person other = (com.test.protobuf.out.example.Test2.Person) obj;if (hasName() != other.hasName()) return false;if (hasName()) {if (!getName().equals(other.getName())) return false;}if (hasAge() != other.hasAge()) return false;if (hasAge()) {if (getAge()!= other.getAge()) return false;}if (!getUnknownFields().equals(other.getUnknownFields())) return false;return true;}@java.lang.Overridepublic int hashCode() {if (memoizedHashCode != 0) {return memoizedHashCode;}int hash = 41;hash = (19 * hash) + getDescriptor().hashCode();if (hasName()) {hash = (37 * hash) + NAME_FIELD_NUMBER;hash = (53 * hash) + getName().hashCode();}if (hasAge()) {hash = (37 * hash) + AGE_FIELD_NUMBER;hash = (53 * hash) + getAge();}hash = (29 * hash) + getUnknownFields().hashCode();memoizedHashCode = hash;return hash;}public static com.test.protobuf.out.example.Test2.Person parseFrom(java.nio.ByteBuffer data)throws com.google.protobuf.InvalidProtocolBufferException {return PARSER.parseFrom(data);}public static com.test.protobuf.out.example.Test2.Person parseFrom(java.nio.ByteBuffer data,com.google.protobuf.ExtensionRegistryLite extensionRegistry)throws com.google.protobuf.InvalidProtocolBufferException {return PARSER.parseFrom(data, extensionRegistry);}public static com.test.protobuf.out.example.Test2.Person parseFrom(com.google.protobuf.ByteString data)throws com.google.protobuf.InvalidProtocolBufferException {return PARSER.parseFrom(data);}public static com.test.protobuf.out.example.Test2.Person 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.protobuf.out.example.Test2.Person parseFrom(byte[] data)throws com.google.protobuf.InvalidProtocolBufferException {return PARSER.parseFrom(data);}public static com.test.protobuf.out.example.Test2.Person parseFrom(byte[] data,com.google.protobuf.ExtensionRegistryLite extensionRegistry)throws com.google.protobuf.InvalidProtocolBufferException {return PARSER.parseFrom(data, extensionRegistry);}public static com.test.protobuf.out.example.Test2.Person parseFrom(java.io.InputStream input)throws java.io.IOException {return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);}public static com.test.protobuf.out.example.Test2.Person parseFrom(java.io.InputStream input,com.google.protobuf.ExtensionRegistryLite extensionRegistry)throws java.io.IOException {return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);}public static com.test.protobuf.out.example.Test2.Person parseDelimitedFrom(java.io.InputStream input)throws java.io.IOException {return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);}public static com.test.protobuf.out.example.Test2.Person parseDelimitedFrom(java.io.InputStream input,com.google.protobuf.ExtensionRegistryLite extensionRegistry)throws java.io.IOException {return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);}public static com.test.protobuf.out.example.Test2.Person parseFrom(com.google.protobuf.CodedInputStream input)throws java.io.IOException {return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);}public static com.test.protobuf.out.example.Test2.Person parseFrom(com.google.protobuf.CodedInputStream input,com.google.protobuf.ExtensionRegistryLite extensionRegistry)throws java.io.IOException {return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);}@java.lang.Overridepublic Builder newBuilderForType() { return newBuilder(); }public static Builder newBuilder() {return DEFAULT_INSTANCE.toBuilder();}public static Builder newBuilder(com.test.protobuf.out.example.Test2.Person prototype) {return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);}@java.lang.Overridepublic Builder toBuilder() {return this == DEFAULT_INSTANCE? new Builder() : new Builder().mergeFrom(this);}@java.lang.Overrideprotected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {Builder builder = new Builder(parent);return builder;}/*** Protobuf type {@code com.test.protobuf.out.example.Person}*/public static final class Builder extendscom.google.protobuf.GeneratedMessageV3.Builder<Builder> implements// @@protoc_insertion_point(builder_implements:com.test.protobuf.out.example.Person)com.test.protobuf.out.example.Test2.PersonOrBuilder {public static final com.google.protobuf.Descriptors.DescriptorgetDescriptor() {return com.test.protobuf.out.example.Test2.internal_static_example_Person_descriptor;}@java.lang.Overrideprotected com.google.protobuf.GeneratedMessageV3.FieldAccessorTableinternalGetFieldAccessorTable() {return com.test.protobuf.out.example.Test2.internal_static_example_Person_fieldAccessorTable.ensureFieldAccessorsInitialized(com.test.protobuf.out.example.Test2.Person.class, com.test.protobuf.out.example.Test2.Person.Builder.class);}// Construct using com.test.protobuf.out.example.Test2.Person.newBuilder()private Builder() {}private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {super(parent);}@java.lang.Overridepublic Builder clear() {super.clear();name_ = "";bitField0_ = (bitField0_ & ~0x00000001);age_ = 18;bitField0_ = (bitField0_ & ~0x00000002);return this;}@java.lang.Overridepublic com.google.protobuf.Descriptors.DescriptorgetDescriptorForType() {return com.test.protobuf.out.example.Test2.internal_static_example_Person_descriptor;}@java.lang.Overridepublic com.test.protobuf.out.example.Test2.Person getDefaultInstanceForType() {return com.test.protobuf.out.example.Test2.Person.getDefaultInstance();}@java.lang.Overridepublic com.test.protobuf.out.example.Test2.Person build() {com.test.protobuf.out.example.Test2.Person result = buildPartial();if (!result.isInitialized()) {throw newUninitializedMessageException(result);}return result;}@java.lang.Overridepublic com.test.protobuf.out.example.Test2.Person buildPartial() {com.test.protobuf.out.example.Test2.Person result = new com.test.protobuf.out.example.Test2.Person(this);int from_bitField0_ = bitField0_;int to_bitField0_ = 0;if (((from_bitField0_ & 0x00000001) != 0)) {to_bitField0_ |= 0x00000001;}result.name_ = name_;if (((from_bitField0_ & 0x00000002) != 0)) {to_bitField0_ |= 0x00000002;}result.age_ = age_;result.bitField0_ = to_bitField0_;onBuilt();return result;}@java.lang.Overridepublic Builder clone() {return super.clone();}@java.lang.Overridepublic Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field,java.lang.Object value) {return super.setField(field, value);}@java.lang.Overridepublic Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {return super.clearField(field);}@java.lang.Overridepublic Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {return super.clearOneof(oneof);}@java.lang.Overridepublic Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field,int index, java.lang.Object value) {return super.setRepeatedField(field, index, value);}@java.lang.Overridepublic Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field,java.lang.Object value) {return super.addRepeatedField(field, value);}@java.lang.Overridepublic Builder mergeFrom(com.google.protobuf.Message other) {if (other instanceof com.test.protobuf.out.example.Test2.Person) {return mergeFrom((com.test.protobuf.out.example.Test2.Person)other);} else {super.mergeFrom(other);return this;}}public Builder mergeFrom(com.test.protobuf.out.example.Test2.Person other) {if (other == com.test.protobuf.out.example.Test2.Person.getDefaultInstance()) return this;if (other.hasName()) {bitField0_ |= 0x00000001;name_ = other.name_;onChanged();}if (other.hasAge()) {setAge(other.getAge());}this.mergeUnknownFields(other.getUnknownFields());onChanged();return this;}@java.lang.Overridepublic final boolean isInitialized() {if (!hasName()) {return false;}return true;}@java.lang.Overridepublic Builder mergeFrom(com.google.protobuf.CodedInputStream input,com.google.protobuf.ExtensionRegistryLite extensionRegistry)throws java.io.IOException {if (extensionRegistry == null) {throw new java.lang.NullPointerException();}try {boolean done = false;while (!done) {int tag = input.readTag();switch (tag) {case 0:done = true;break;case 10: {name_ = input.readBytes();bitField0_ |= 0x00000001;break;} // case 10case 16: {age_ = input.readInt32();bitField0_ |= 0x00000002;break;} // case 16default: {if (!super.parseUnknownField(input, extensionRegistry, tag)) {done = true; // was an endgroup tag}break;} // default:} // switch (tag)} // while (!done)} catch (com.google.protobuf.InvalidProtocolBufferException e) {throw e.unwrapIOException();} finally {onChanged();} // finallyreturn this;}private int bitField0_;private java.lang.Object name_ = "";/*** <code>required string name = 1;</code>* @return Whether the name field is set.*/public boolean hasName() {return ((bitField0_ & 0x00000001) != 0);}/*** <code>required string name = 1;</code>* @return The name.*/public java.lang.String getName() {java.lang.Object ref = name_;if (!(ref instanceof java.lang.String)) {com.google.protobuf.ByteString bs =(com.google.protobuf.ByteString) ref;java.lang.String s = bs.toStringUtf8();if (bs.isValidUtf8()) {name_ = s;}return s;} else {return (java.lang.String) ref;}}/*** <code>required string name = 1;</code>* @return The bytes for name.*/public com.google.protobuf.ByteStringgetNameBytes() {java.lang.Object ref = name_;if (ref instanceof String) {com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);name_ = b;return b;} else {return (com.google.protobuf.ByteString) ref;}}/*** <code>required string name = 1;</code>* @param value The name to set.* @return This builder for chaining.*/public Builder setName(java.lang.String value) {if (value == null) {throw new NullPointerException();}bitField0_ |= 0x00000001;name_ = value;onChanged();return this;}/*** <code>required string name = 1;</code>* @return This builder for chaining.*/public Builder clearName() {bitField0_ = (bitField0_ & ~0x00000001);name_ = getDefaultInstance().getName();onChanged();return this;}/*** <code>required string name = 1;</code>* @param value The bytes for name to set.* @return This builder for chaining.*/public Builder setNameBytes(com.google.protobuf.ByteString value) {if (value == null) {throw new NullPointerException();}bitField0_ |= 0x00000001;name_ = value;onChanged();return this;}private int age_ = 18;/*** <code>optional int32 age = 2 [default = 18];</code>* @return Whether the age field is set.*/@java.lang.Overridepublic boolean hasAge() {return ((bitField0_ & 0x00000002) != 0);}/*** <code>optional int32 age = 2 [default = 18];</code>* @return The age.*/@java.lang.Overridepublic int getAge() {return age_;}/*** <code>optional int32 age = 2 [default = 18];</code>* @param value The age to set.* @return This builder for chaining.*/public Builder setAge(int value) {bitField0_ |= 0x00000002;age_ = value;onChanged();return this;}/*** <code>optional int32 age = 2 [default = 18];</code>* @return This builder for chaining.*/public Builder clearAge() {bitField0_ = (bitField0_ & ~0x00000002);age_ = 18;onChanged();return this;}@java.lang.Overridepublic final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {return super.setUnknownFields(unknownFields);}@java.lang.Overridepublic final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {return super.mergeUnknownFields(unknownFields);}// @@protoc_insertion_point(builder_scope:com.test.protobuf.out.example.Person)}// @@protoc_insertion_point(class_scope:com.test.protobuf.out.example.Person)private static final com.test.protobuf.out.example.Test2.Person DEFAULT_INSTANCE;static {DEFAULT_INSTANCE = new com.test.protobuf.out.example.Test2.Person();}public static com.test.protobuf.out.example.Test2.Person getDefaultInstance() {return DEFAULT_INSTANCE;}@java.lang.Deprecated public static final com.google.protobuf.Parser<Person>PARSER = new com.google.protobuf.AbstractParser<Person>() {@java.lang.Overridepublic Person parsePartialFrom(com.google.protobuf.CodedInputStream input,com.google.protobuf.ExtensionRegistryLite extensionRegistry)throws com.google.protobuf.InvalidProtocolBufferException {Builder builder = newBuilder();try {builder.mergeFrom(input, extensionRegistry);} catch (com.google.protobuf.InvalidProtocolBufferException e) {throw e.setUnfinishedMessage(builder.buildPartial());} catch (com.google.protobuf.UninitializedMessageException e) {throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());} catch (java.io.IOException e) {throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());}return builder.buildPartial();}};public static com.google.protobuf.Parser<Person> parser() {return PARSER;}@java.lang.Overridepublic com.google.protobuf.Parser<Person> getParserForType() {return PARSER;}@java.lang.Overridepublic com.test.protobuf.out.example.Test2.Person getDefaultInstanceForType() {return DEFAULT_INSTANCE;}}private static final com.google.protobuf.Descriptors.Descriptorinternal_static_example_Person_descriptor;private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTableinternal_static_example_Person_fieldAccessorTable;public static com.google.protobuf.Descriptors.FileDescriptorgetDescriptor() {return descriptor;}private static  com.google.protobuf.Descriptors.FileDescriptordescriptor;static {java.lang.String[] descriptorData = {"\n\013test2.proto\022\007example\"\'\n\006Person\022\014\n\004name" +"\030\001 \002(\t\022\017\n\003age\030\002 \001(\005:\00218"};descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData,new com.google.protobuf.Descriptors.FileDescriptor[] {});internal_static_example_Person_descriptor =getDescriptor().getMessageTypes().get(0);internal_static_example_Person_fieldAccessorTable = newcom.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_example_Person_descriptor,new java.lang.String[] { "Name", "Age", });}// @@protoc_insertion_point(outer_class_scope)
}

测试java文件是否可以正常使用

public static void testResolve() throws InvalidProtocolBufferException {byte[] protoBytes = new byte[] {0x0A, 0x05, 0x41, 0x6C, 0x69, 0x63, 0x65, // name: "Alice"0x10, 0x14                                // age: 20};Test2.Person person = Test2.Person.parseFrom(protoBytes);// 4. 验证System.out.println(person.getName()); // AliceSystem.out.println(person.getAge());  // 20}

测试结果:
在这里插入图片描述
测试结论:变量前面的路径存在与否,都可以正常使用protoc转换后的java文件

http://www.dtcms.com/wzjs/425429.html

相关文章:

  • 教你如何做网站今日头条新闻在线看
  • 广告策划书包括哪些内容石家庄百度seo排名
  • 网站f式布局哈尔滨seo网络推广
  • 成绩查询系统网站开发免费网站建站2773
  • 石家庄电子商务网站建设福州seo公司排名
  • 介休市网站建设公司站长之家官网入口
  • 南昌网站建设公司效果爱站网seo
  • logo在线设计免费生成器东莞seo外包
  • 电商pc网站建设方案百度竞价推广有哪些优势
  • 免费做问卷的网站百度指数三个功能模块
  • 房地产最新消息解读seo线上培训机构
  • 网站名称怎么起好听域名注册网站有哪些
  • 请问做网站需要什么软件天津百度网站快速排名
  • wordpress 复制 word格式宁波seo智能优化
  • 做经营性的网站备案条件高清免费观看电视网站
  • 长治做网站的公司竞价托管推广多少钱
  • 漳州疫情最新情况 最新消息百度seo如何快速排名
  • 做网站游戏都需要什么小学生简短小新闻
  • 简易手机站郑州seo外包
  • 榆次网站建设网络营销推广方案
  • 怎样做网址有自己的模板怎么快速优化关键词排名
  • 苏州关键词网站排名网站优化推广方法
  • 傻瓜式一键建站系统网上推广的平台有哪些
  • 网站建设个人简历今天新闻头条最新消息
  • 关于网站开发的网站百度标注平台怎么加入
  • 做a的网站有哪些郴州网络推广公司排名
  • 站长工具seo综合查询源码惠州百度seo
  • 网站地图后台可以做吗揭阳seo推广公司
  • 网站静态文件免费发布信息
  • 帮你做决定的网站关键词优化公司靠谱推荐