• google protobuf 简单实例


    1.定义proto文件:

    User.proto

    package netty;
    option java_package="myprotobuf";
    option java_outer_classname="UserProto";
    
    message User{
        required int32 ID=1;
        required string userName=2;
        required string Password=3;
        repeated string address=4;
    }

    2.用 protoc.exe 生成User.proto的协议文件:

    D:JAVAprotoc-2.5.0-win32>protoc.exe --java_out=. User.proto

    // Generated by the protocol buffer compiler.  DO NOT EDIT!
    // source: User.proto
    
    package myprotobuf;
    
    public final class UserProto {
      private UserProto() {}
      public static void registerAllExtensions(
          com.google.protobuf.ExtensionRegistry registry) {
      }
      public interface UserOrBuilder
          extends com.google.protobuf.MessageOrBuilder {
    
        // required int32 ID = 1;
        /**
         * <code>required int32 ID = 1;</code>
         */
        boolean hasID();
        /**
         * <code>required int32 ID = 1;</code>
         */
        int getID();
    
        // required string userName = 2;
        /**
         * <code>required string userName = 2;</code>
         */
        boolean hasUserName();
        /**
         * <code>required string userName = 2;</code>
         */
        java.lang.String getUserName();
        /**
         * <code>required string userName = 2;</code>
         */
        com.google.protobuf.ByteString
            getUserNameBytes();
    
        // required string Password = 3;
        /**
         * <code>required string Password = 3;</code>
         */
        boolean hasPassword();
        /**
         * <code>required string Password = 3;</code>
         */
        java.lang.String getPassword();
        /**
         * <code>required string Password = 3;</code>
         */
        com.google.protobuf.ByteString
            getPasswordBytes();
    
        // repeated string address = 4;
        /**
         * <code>repeated string address = 4;</code>
         */
        java.util.List<java.lang.String>
        getAddressList();
        /**
         * <code>repeated string address = 4;</code>
         */
        int getAddressCount();
        /**
         * <code>repeated string address = 4;</code>
         */
        java.lang.String getAddress(int index);
        /**
         * <code>repeated string address = 4;</code>
         */
        com.google.protobuf.ByteString
            getAddressBytes(int index);
      }
      /**
       * Protobuf type {@code netty.User}
       */
      public static final class User extends
          com.google.protobuf.GeneratedMessage
          implements UserOrBuilder {
        // Use User.newBuilder() to construct.
        private User(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private User(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
    
        private static final User defaultInstance;
        public static User getDefaultInstance() {
          return defaultInstance;
        }
    
        public User getDefaultInstanceForType() {
          return defaultInstance;
        }
    
        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private User(
            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 8: {
                  bitField0_ |= 0x00000001;
                  iD_ = input.readInt32();
                  break;
                }
                case 18: {
                  bitField0_ |= 0x00000002;
                  userName_ = input.readBytes();
                  break;
                }
                case 26: {
                  bitField0_ |= 0x00000004;
                  password_ = input.readBytes();
                  break;
                }
                case 34: {
                  if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                    address_ = new com.google.protobuf.LazyStringArrayList();
                    mutable_bitField0_ |= 0x00000008;
                  }
                  address_.add(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 {
            if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
              address_ = new com.google.protobuf.UnmodifiableLazyStringList(address_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return myprotobuf.UserProto.internal_static_netty_User_descriptor;
        }
    
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return myprotobuf.UserProto.internal_static_netty_User_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  myprotobuf.UserProto.User.class, myprotobuf.UserProto.User.Builder.class);
        }
    
        public static com.google.protobuf.Parser<User> PARSER =
            new com.google.protobuf.AbstractParser<User>() {
          public User parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new User(input, extensionRegistry);
          }
        };
    
        @java.lang.Override
        public com.google.protobuf.Parser<User> getParserForType() {
          return PARSER;
        }
    
        private int bitField0_;
        // required int32 ID = 1;
        public static final int ID_FIELD_NUMBER = 1;
        private int iD_;
        /**
         * <code>required int32 ID = 1;</code>
         */
        public boolean hasID() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required int32 ID = 1;</code>
         */
        public int getID() {
          return iD_;
        }
    
        // required string userName = 2;
        public static final int USERNAME_FIELD_NUMBER = 2;
        private java.lang.Object userName_;
        /**
         * <code>required string userName = 2;</code>
         */
        public boolean hasUserName() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required string userName = 2;</code>
         */
        public java.lang.String getUserName() {
          java.lang.Object ref = userName_;
          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()) {
              userName_ = s;
            }
            return s;
          }
        }
        /**
         * <code>required string userName = 2;</code>
         */
        public com.google.protobuf.ByteString
            getUserNameBytes() {
          java.lang.Object ref = userName_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            userName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
    
        // required string Password = 3;
        public static final int PASSWORD_FIELD_NUMBER = 3;
        private java.lang.Object password_;
        /**
         * <code>required string Password = 3;</code>
         */
        public boolean hasPassword() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>required string Password = 3;</code>
         */
        public java.lang.String getPassword() {
          java.lang.Object ref = password_;
          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()) {
              password_ = s;
            }
            return s;
          }
        }
        /**
         * <code>required string Password = 3;</code>
         */
        public com.google.protobuf.ByteString
            getPasswordBytes() {
          java.lang.Object ref = password_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            password_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
    
        // repeated string address = 4;
        public static final int ADDRESS_FIELD_NUMBER = 4;
        private com.google.protobuf.LazyStringList address_;
        /**
         * <code>repeated string address = 4;</code>
         */
        public java.util.List<java.lang.String>
            getAddressList() {
          return address_;
        }
        /**
         * <code>repeated string address = 4;</code>
         */
        public int getAddressCount() {
          return address_.size();
        }
        /**
         * <code>repeated string address = 4;</code>
         */
        public java.lang.String getAddress(int index) {
          return address_.get(index);
        }
        /**
         * <code>repeated string address = 4;</code>
         */
        public com.google.protobuf.ByteString
            getAddressBytes(int index) {
          return address_.getByteString(index);
        }
    
        private void initFields() {
          iD_ = 0;
          userName_ = "";
          password_ = "";
          address_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        }
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized != -1) return isInitialized == 1;
    
          if (!hasID()) {
            memoizedIsInitialized = 0;
            return false;
          }
          if (!hasUserName()) {
            memoizedIsInitialized = 0;
            return false;
          }
          if (!hasPassword()) {
            memoizedIsInitialized = 0;
            return false;
          }
          memoizedIsInitialized = 1;
          return true;
        }
    
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getSerializedSize();
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeInt32(1, iD_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeBytes(2, getUserNameBytes());
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeBytes(3, getPasswordBytes());
          }
          for (int i = 0; i < address_.size(); i++) {
            output.writeBytes(4, address_.getByteString(i));
          }
          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
              .computeInt32Size(1, iD_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBytesSize(2, getUserNameBytes());
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBytesSize(3, getPasswordBytes());
          }
          {
            int dataSize = 0;
            for (int i = 0; i < address_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeBytesSizeNoTag(address_.getByteString(i));
            }
            size += dataSize;
            size += 1 * getAddressList().size();
          }
          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 myprotobuf.UserProto.User parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static myprotobuf.UserProto.User parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static myprotobuf.UserProto.User parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static myprotobuf.UserProto.User parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static myprotobuf.UserProto.User parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static myprotobuf.UserProto.User parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static myprotobuf.UserProto.User parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static myprotobuf.UserProto.User parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static myprotobuf.UserProto.User parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static myprotobuf.UserProto.User 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(myprotobuf.UserProto.User 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 netty.User}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder<Builder>
           implements myprotobuf.UserProto.UserOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return myprotobuf.UserProto.internal_static_netty_User_descriptor;
          }
    
          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return myprotobuf.UserProto.internal_static_netty_User_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    myprotobuf.UserProto.User.class, myprotobuf.UserProto.User.Builder.class);
          }
    
          // Construct using myprotobuf.UserProto.User.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();
            iD_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            userName_ = "";
            bitField0_ = (bitField0_ & ~0x00000002);
            password_ = "";
            bitField0_ = (bitField0_ & ~0x00000004);
            address_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            bitField0_ = (bitField0_ & ~0x00000008);
            return this;
          }
    
          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }
    
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return myprotobuf.UserProto.internal_static_netty_User_descriptor;
          }
    
          public myprotobuf.UserProto.User getDefaultInstanceForType() {
            return myprotobuf.UserProto.User.getDefaultInstance();
          }
    
          public myprotobuf.UserProto.User build() {
            myprotobuf.UserProto.User result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
    
          public myprotobuf.UserProto.User buildPartial() {
            myprotobuf.UserProto.User result = new myprotobuf.UserProto.User(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.iD_ = iD_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.userName_ = userName_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.password_ = password_;
            if (((bitField0_ & 0x00000008) == 0x00000008)) {
              address_ = new com.google.protobuf.UnmodifiableLazyStringList(
                  address_);
              bitField0_ = (bitField0_ & ~0x00000008);
            }
            result.address_ = address_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }
    
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof myprotobuf.UserProto.User) {
              return mergeFrom((myprotobuf.UserProto.User)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
    
          public Builder mergeFrom(myprotobuf.UserProto.User other) {
            if (other == myprotobuf.UserProto.User.getDefaultInstance()) return this;
            if (other.hasID()) {
              setID(other.getID());
            }
            if (other.hasUserName()) {
              bitField0_ |= 0x00000002;
              userName_ = other.userName_;
              onChanged();
            }
            if (other.hasPassword()) {
              bitField0_ |= 0x00000004;
              password_ = other.password_;
              onChanged();
            }
            if (!other.address_.isEmpty()) {
              if (address_.isEmpty()) {
                address_ = other.address_;
                bitField0_ = (bitField0_ & ~0x00000008);
              } else {
                ensureAddressIsMutable();
                address_.addAll(other.address_);
              }
              onChanged();
            }
            this.mergeUnknownFields(other.getUnknownFields());
            return this;
          }
    
          public final boolean isInitialized() {
            if (!hasID()) {
              
              return false;
            }
            if (!hasUserName()) {
              
              return false;
            }
            if (!hasPassword()) {
              
              return false;
            }
            return true;
          }
    
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            myprotobuf.UserProto.User parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (myprotobuf.UserProto.User) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;
    
          // required int32 ID = 1;
          private int iD_ ;
          /**
           * <code>required int32 ID = 1;</code>
           */
          public boolean hasID() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * <code>required int32 ID = 1;</code>
           */
          public int getID() {
            return iD_;
          }
          /**
           * <code>required int32 ID = 1;</code>
           */
          public Builder setID(int value) {
            bitField0_ |= 0x00000001;
            iD_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>required int32 ID = 1;</code>
           */
          public Builder clearID() {
            bitField0_ = (bitField0_ & ~0x00000001);
            iD_ = 0;
            onChanged();
            return this;
          }
    
          // required string userName = 2;
          private java.lang.Object userName_ = "";
          /**
           * <code>required string userName = 2;</code>
           */
          public boolean hasUserName() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * <code>required string userName = 2;</code>
           */
          public java.lang.String getUserName() {
            java.lang.Object ref = userName_;
            if (!(ref instanceof java.lang.String)) {
              java.lang.String s = ((com.google.protobuf.ByteString) ref)
                  .toStringUtf8();
              userName_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * <code>required string userName = 2;</code>
           */
          public com.google.protobuf.ByteString
              getUserNameBytes() {
            java.lang.Object ref = userName_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              userName_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * <code>required string userName = 2;</code>
           */
          public Builder setUserName(
              java.lang.String value) {
            if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00000002;
            userName_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>required string userName = 2;</code>
           */
          public Builder clearUserName() {
            bitField0_ = (bitField0_ & ~0x00000002);
            userName_ = getDefaultInstance().getUserName();
            onChanged();
            return this;
          }
          /**
           * <code>required string userName = 2;</code>
           */
          public Builder setUserNameBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00000002;
            userName_ = value;
            onChanged();
            return this;
          }
    
          // required string Password = 3;
          private java.lang.Object password_ = "";
          /**
           * <code>required string Password = 3;</code>
           */
          public boolean hasPassword() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * <code>required string Password = 3;</code>
           */
          public java.lang.String getPassword() {
            java.lang.Object ref = password_;
            if (!(ref instanceof java.lang.String)) {
              java.lang.String s = ((com.google.protobuf.ByteString) ref)
                  .toStringUtf8();
              password_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * <code>required string Password = 3;</code>
           */
          public com.google.protobuf.ByteString
              getPasswordBytes() {
            java.lang.Object ref = password_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              password_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * <code>required string Password = 3;</code>
           */
          public Builder setPassword(
              java.lang.String value) {
            if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00000004;
            password_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>required string Password = 3;</code>
           */
          public Builder clearPassword() {
            bitField0_ = (bitField0_ & ~0x00000004);
            password_ = getDefaultInstance().getPassword();
            onChanged();
            return this;
          }
          /**
           * <code>required string Password = 3;</code>
           */
          public Builder setPasswordBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00000004;
            password_ = value;
            onChanged();
            return this;
          }
    
          // repeated string address = 4;
          private com.google.protobuf.LazyStringList address_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          private void ensureAddressIsMutable() {
            if (!((bitField0_ & 0x00000008) == 0x00000008)) {
              address_ = new com.google.protobuf.LazyStringArrayList(address_);
              bitField0_ |= 0x00000008;
             }
          }
          /**
           * <code>repeated string address = 4;</code>
           */
          public java.util.List<java.lang.String>
              getAddressList() {
            return java.util.Collections.unmodifiableList(address_);
          }
          /**
           * <code>repeated string address = 4;</code>
           */
          public int getAddressCount() {
            return address_.size();
          }
          /**
           * <code>repeated string address = 4;</code>
           */
          public java.lang.String getAddress(int index) {
            return address_.get(index);
          }
          /**
           * <code>repeated string address = 4;</code>
           */
          public com.google.protobuf.ByteString
              getAddressBytes(int index) {
            return address_.getByteString(index);
          }
          /**
           * <code>repeated string address = 4;</code>
           */
          public Builder setAddress(
              int index, java.lang.String value) {
            if (value == null) {
        throw new NullPointerException();
      }
      ensureAddressIsMutable();
            address_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated string address = 4;</code>
           */
          public Builder addAddress(
              java.lang.String value) {
            if (value == null) {
        throw new NullPointerException();
      }
      ensureAddressIsMutable();
            address_.add(value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated string address = 4;</code>
           */
          public Builder addAllAddress(
              java.lang.Iterable<java.lang.String> values) {
            ensureAddressIsMutable();
            super.addAll(values, address_);
            onChanged();
            return this;
          }
          /**
           * <code>repeated string address = 4;</code>
           */
          public Builder clearAddress() {
            address_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            bitField0_ = (bitField0_ & ~0x00000008);
            onChanged();
            return this;
          }
          /**
           * <code>repeated string address = 4;</code>
           */
          public Builder addAddressBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
        throw new NullPointerException();
      }
      ensureAddressIsMutable();
            address_.add(value);
            onChanged();
            return this;
          }
    
          // @@protoc_insertion_point(builder_scope:netty.User)
        }
    
        static {
          defaultInstance = new User(true);
          defaultInstance.initFields();
        }
    
        // @@protoc_insertion_point(class_scope:netty.User)
      }
    
      private static com.google.protobuf.Descriptors.Descriptor
        internal_static_netty_User_descriptor;
      private static
        com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internal_static_netty_User_fieldAccessorTable;
    
      public static com.google.protobuf.Descriptors.FileDescriptor
          getDescriptor() {
        return descriptor;
      }
      private static com.google.protobuf.Descriptors.FileDescriptor
          descriptor;
      static {
        java.lang.String[] descriptorData = {
          "
    
    User.proto2205netty"G
    04User22
    
    02ID3001 02(0522" +
          "20
    10userName3002 02(	2220
    10Password3003 02(	2217
    07a" +
          "ddress3004 03(	B27
    
    myprotobufB	UserProto"
        };
        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_netty_User_descriptor =
                getDescriptor().getMessageTypes().get(0);
              internal_static_netty_User_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                  internal_static_netty_User_descriptor,
                  new java.lang.String[] { "ID", "UserName", "Password", "Address", });
              return null;
            }
          };
        com.google.protobuf.Descriptors.FileDescriptor
          .internalBuildGeneratedFileFrom(descriptorData,
            new com.google.protobuf.Descriptors.FileDescriptor[] {
            }, assigner);
      }
    
      // @@protoc_insertion_point(outer_class_scope)
    }
    View Code

    3.测试类:

    package myprotobuf;
    
    import java.util.ArrayList;
    import java.util.List;
    import com.google.protobuf.InvalidProtocolBufferException;
    
    public class Test {
    
        private static byte[] encode(UserProto.User user) {
            return user.toByteArray();
        }
    
        private static UserProto.User decode(byte[] body)
                throws InvalidProtocolBufferException {
            return UserProto.User.parseFrom(body);
        }
    
        public static void main(String[] args)
                throws InvalidProtocolBufferException {
    
            UserProto.User.Builder builder = UserProto.User.newBuilder();
            builder.setID(1);
            builder.setUserName("Lilinfeng");
            builder.setPassword("Netty Book");
            List<String> address = new ArrayList<String>();
            address.add("NanJing YuHuaTai");
            address.add("BeiJing LiuLiChang");
            address.add("ShenZhen HongShuLin");
            builder.addAllAddress(address);
            UserProto.User user = builder.build();
    
            System.out.println("Before encode : " + user.toString());
            UserProto.User user2 = decode(encode(user));
            System.out.println("After decode : " + user2.toString());
            System.out.println("Assert equal : --> " + user2.equals(user));
    
        }
    
    }

    4.测试结果,说明编码和解密后结果一致:

    Before encode : ID: 1
    userName: "Lilinfeng"
    Password: "Netty Book"
    address: "NanJing YuHuaTai"
    address: "BeiJing LiuLiChang"
    address: "ShenZhen HongShuLin"
    
    After decode : ID: 1
    userName: "Lilinfeng"
    Password: "Netty Book"
    address: "NanJing YuHuaTai"
    address: "BeiJing LiuLiChang"
    address: "ShenZhen HongShuLin"
    
    Assert equal : --> true
  • 相关阅读:
    poj 2689 大范围内素数筛选
    poj 3270 置换
    Linux命令(实时更新)
    性能测试
    sql注入
    MySQL回表查询
    MySQL数据库高可用方案
    java反射机制
    分布式数据库
    数据库的灾备
  • 原文地址:https://www.cnblogs.com/zhuawang/p/3971839.html
Copyright © 2020-2023  润新知