com.google.protobuf

## Class GeneratedMessageV3

- java.lang.Object
- - com.google.protobuf.AbstractMessageLite
  - - com.google.protobuf.AbstractMessage
    - - com.google.protobuf.GeneratedMessageV3

- All Implemented Interfaces:
    Message, MessageLite, MessageLiteOrBuilder, MessageOrBuilder, java.io.Serializable
  Direct Known Subclasses:
    DescriptorProtos.DescriptorProto, DescriptorProtos.DescriptorProto.ExtensionRange, DescriptorProtos.DescriptorProto.ReservedRange, DescriptorProtos.EnumDescriptorProto, DescriptorProtos.EnumValueDescriptorProto, DescriptorProtos.FieldDescriptorProto, DescriptorProtos.FileDescriptorProto, DescriptorProtos.FileDescriptorSet, DescriptorProtos.GeneratedCodeInfo, DescriptorProtos.GeneratedCodeInfo.Annotation, DescriptorProtos.MethodDescriptorProto, DescriptorProtos.OneofDescriptorProto, DescriptorProtos.ServiceDescriptorProto, DescriptorProtos.SourceCodeInfo, DescriptorProtos.SourceCodeInfo.Location, DescriptorProtos.UninterpretedOption, DescriptorProtos.UninterpretedOption.NamePart, GeneratedMessageV3.ExtendableMessage

      public abstract class GeneratedMessageV3
      extends AbstractMessage
      implements java.io.Serializable

  All generated protocol message classes extend this class. This class implements most of the Message and Builder interfaces using Java reflection. Users can ignore this class and pretend that generated messages implement the Message interface directly.
  See Also:
    Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `GeneratedMessageV3.Builder<BuilderType extends GeneratedMessageV3.Builder<BuilderType>>`
    `protected static interface` | `GeneratedMessageV3.BuilderParent` TODO(xiaofeng): remove this after b/29368482 is fixed.
    `static class` | `GeneratedMessageV3.ExtendableBuilder<MessageType extends GeneratedMessageV3.ExtendableMessage,BuilderType extends GeneratedMessageV3.ExtendableBuilder<MessageType,BuilderType>>` Generated message builders for message types that contain extension ranges subclass this.
    `static class` | `GeneratedMessageV3.ExtendableMessage<MessageType extends GeneratedMessageV3.ExtendableMessage>` Generated message classes for message types that contain extension ranges subclass this.
    `static interface` | `GeneratedMessageV3.ExtendableMessageOrBuilder<MessageType extends GeneratedMessageV3.ExtendableMessage>`
    `static class` | `GeneratedMessageV3.FieldAccessorTable` Users should ignore this class.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static boolean` | `alwaysUseFieldBuilders` For testing.
    `protected UnknownFieldSet` | `unknownFields` For use by generated code only.

    - ### Fields inherited from class com.google.protobuf.AbstractMessage

      `memoizedSize`

    - ### Fields inherited from class com.google.protobuf.AbstractMessageLite

      `memoizedHashCode`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `GeneratedMessageV3()`
    `protected` | `GeneratedMessageV3(GeneratedMessageV3.Builder<?> builder)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected static int` | `computeStringSize(int fieldNumber, java.lang.Object value)`
    `protected static int` | `computeStringSizeNoTag(java.lang.Object value)`
    `java.util.Map<Descriptors.FieldDescriptor,java.lang.Object>` | `getAllFields()` Returns a collection of all the fields in this message which are set and their corresponding values.
    `Descriptors.Descriptor` | `getDescriptorForType()` Get the message's type's descriptor.
    `java.lang.Object` | `getField(Descriptors.FieldDescriptor field)` Obtains the value of the given field, or the default value if it is not set.
    `Descriptors.FieldDescriptor` | `getOneofFieldDescriptor(Descriptors.OneofDescriptor oneof)` TODO(jieluo): Clear it when all subclasses have implemented this method.
    `Parser<? extends GeneratedMessageV3>` | `getParserForType()` Gets the parser for a message of the same type as this message.
    `java.lang.Object` | `getRepeatedField(Descriptors.FieldDescriptor field, int index)` Gets an element of a repeated field.
    `int` | `getRepeatedFieldCount(Descriptors.FieldDescriptor field)` Gets the number of elements of a repeated field.
    `int` | `getSerializedSize()` Get the number of bytes required to encode this message.
    `UnknownFieldSet` | `getUnknownFields()` Get the `UnknownFieldSet` for this message.
    `boolean` | `hasField(Descriptors.FieldDescriptor field)` Returns true if the given field is set.
    `boolean` | `hasOneof(Descriptors.OneofDescriptor oneof)` TODO(jieluo): Clear it when all subclasses have implemented this method.
    `protected abstract GeneratedMessageV3.FieldAccessorTable` | `internalGetFieldAccessorTable()` Get the FieldAccessorTable for this type.
    `protected MapField` | `internalGetMapField(int fieldNumber)` Gets the map field with the given field number.
    `boolean` | `isInitialized()` Returns true if all required fields in the message and all embedded messages are set, false otherwise.
    `protected void` | `makeExtensionsImmutable()` Used by parsing constructors in generated classes.
    `protected Message.Builder` | `newBuilderForType(AbstractMessage.BuilderParent parent)` Create a nested builder.
    `protected abstract Message.Builder` | `newBuilderForType(GeneratedMessageV3.BuilderParent parent)` TODO(xiaofeng): remove this together with GeneratedMessageV3.BuilderParent.
    `protected static <M extends Message> M` | `parseDelimitedWithIOException(Parser<M> parser, java.io.InputStream input)`
    `protected static <M extends Message> M` | `parseDelimitedWithIOException(Parser<M> parser, java.io.InputStream input, ExtensionRegistryLite extensions)`
    `protected boolean` | `parseUnknownField(CodedInputStream input, UnknownFieldSet.Builder unknownFields, ExtensionRegistryLite extensionRegistry, int tag)` Called by subclasses to parse an unknown field.
    `protected static <M extends Message> M` | `parseWithIOException(Parser<M> parser, CodedInputStream input)`
    `protected static <M extends Message> M` | `parseWithIOException(Parser<M> parser, CodedInputStream input, ExtensionRegistryLite extensions)`
    `protected static <M extends Message> M` | `parseWithIOException(Parser<M> parser, java.io.InputStream input)`
    `protected static <M extends Message> M` | `parseWithIOException(Parser<M> parser, java.io.InputStream input, ExtensionRegistryLite extensions)`
    `protected static <V> void` | `serializeBooleanMapTo(CodedOutputStream out, MapField<java.lang.Boolean,V> field, MapEntry<java.lang.Boolean,V> defaultEntry, int fieldNumber)`
    `protected static <V> void` | `serializeIntegerMapTo(CodedOutputStream out, MapField<java.lang.Integer,V> field, MapEntry<java.lang.Integer,V> defaultEntry, int fieldNumber)`
    `protected static <V> void` | `serializeLongMapTo(CodedOutputStream out, MapField<java.lang.Long,V> field, MapEntry<java.lang.Long,V> defaultEntry, int fieldNumber)`
    `protected static <V> void` | `serializeStringMapTo(CodedOutputStream out, MapField<java.lang.String,V> field, MapEntry<java.lang.String,V> defaultEntry, int fieldNumber)`
    `protected java.lang.Object` | `writeReplace()` Replaces this object in the output stream with a serialized form.
    `protected static void` | `writeString(CodedOutputStream output, int fieldNumber, java.lang.Object value)`
    `protected static void` | `writeStringNoTag(CodedOutputStream output, java.lang.Object value)`
    `void` | `writeTo(CodedOutputStream output)` Serializes the message and writes it to `output`.

    - ### Methods inherited from class com.google.protobuf.AbstractMessage

      `equals, findInitializationErrors, getInitializationErrorString, hashBoolean, hashCode, hashEnum, hashEnumList, hashFields, hashLong, toString`

    - ### Methods inherited from class com.google.protobuf.AbstractMessageLite

      `addAll, checkByteStringIsUtf8, toByteArray, toByteString, writeDelimitedTo, writeTo`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface com.google.protobuf.Message

      `newBuilderForType, toBuilder`

    - ### Methods inherited from interface com.google.protobuf.MessageLite

      `toByteArray, toByteString, writeDelimitedTo, writeTo`

    - ### Methods inherited from interface com.google.protobuf.MessageOrBuilder

      `getDefaultInstanceForType`

- - ### Field Detail

    - #### alwaysUseFieldBuilders

          protected static boolean alwaysUseFieldBuilders

      For testing. Allows a test to disable the optimization that avoids using field builders for nested messages until they are requested. By disabling this optimization, existing tests can be reused to test the field builders.

    - #### unknownFields

          protected UnknownFieldSet unknownFields

      For use by generated code only.

  - ### Constructor Detail

    - #### GeneratedMessageV3

          protected GeneratedMessageV3()

    - #### GeneratedMessageV3

          protected GeneratedMessageV3(GeneratedMessageV3.Builder<?> builder)

  - ### Method Detail

    - #### getParserForType

          public Parser<? extends GeneratedMessageV3> getParserForType()

      Description copied from interface: `MessageLite`
      Gets the parser for a message of the same type as this message.
      Specified by:
        `getParserForType` in interface `Message`
      Specified by:
        `getParserForType` in interface `MessageLite`

    - #### internalGetFieldAccessorTable

          protected abstract GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()

      Get the FieldAccessorTable for this type. We can't have the message class pass this in to the constructor because of bootstrapping trouble with DescriptorProtos.

    - #### getDescriptorForType

          public Descriptors.Descriptor getDescriptorForType()

      Description copied from interface: `MessageOrBuilder`
      Get the message's type's descriptor. This differs from the `getDescriptor()` method of generated message classes in that this method is an abstract method of the `Message` interface whereas `getDescriptor()` is a static method of a specific class. They return the same thing.
      Specified by:
        `getDescriptorForType` in interface `MessageOrBuilder`

    - #### isInitialized

          public boolean isInitialized()

      Description copied from interface: `MessageLiteOrBuilder`
      Returns true if all required fields in the message and all embedded messages are set, false otherwise.

      See also: `MessageOrBuilder.getInitializationErrorString()`

      Specified by:
        `isInitialized` in interface `MessageLiteOrBuilder`
      Overrides:
        `isInitialized` in class `AbstractMessage`

    - #### getAllFields

          public java.util.Map<Descriptors.FieldDescriptor,java.lang.Object> getAllFields()

      Description copied from interface: `MessageOrBuilder`
      Returns a collection of all the fields in this message which are set and their corresponding values. A singular ("required" or "optional") field is set iff hasField() returns true for that field. A "repeated" field is set iff getRepeatedFieldCount() is greater than zero. The values are exactly what would be returned by calling `MessageOrBuilder.getField(Descriptors.FieldDescriptor)` for each field. The map is guaranteed to be a sorted map, so iterating over it will return fields in order by field number.
      If this is for a builder, the returned map may or may not reflect future changes to the builder. Either way, the returned map is itself unmodifiable.
      Specified by:
        `getAllFields` in interface `MessageOrBuilder`

    - #### hasOneof

          public boolean hasOneof(Descriptors.OneofDescriptor oneof)

      Description copied from class: `AbstractMessage`
      TODO(jieluo): Clear it when all subclasses have implemented this method.
      Specified by:
        `hasOneof` in interface `MessageOrBuilder`
      Overrides:
        `hasOneof` in class `AbstractMessage`

    - #### getOneofFieldDescriptor

          public Descriptors.FieldDescriptor getOneofFieldDescriptor(Descriptors.OneofDescriptor oneof)

      Description copied from class: `AbstractMessage`
      TODO(jieluo): Clear it when all subclasses have implemented this method.
      Specified by:
        `getOneofFieldDescriptor` in interface `MessageOrBuilder`
      Overrides:
        `getOneofFieldDescriptor` in class `AbstractMessage`

    - #### hasField

          public boolean hasField(Descriptors.FieldDescriptor field)

      Description copied from interface: `MessageOrBuilder`
      Returns true if the given field is set. This is exactly equivalent to calling the generated "has" accessor method corresponding to the field.
      Specified by:
        `hasField` in interface `MessageOrBuilder`

    - #### getField

          public java.lang.Object getField(Descriptors.FieldDescriptor field)

      Description copied from interface: `MessageOrBuilder`
      Obtains the value of the given field, or the default value if it is not set. For primitive fields, the boxed primitive value is returned. For enum fields, the EnumValueDescriptor for the value is returned. For embedded message fields, the sub-message is returned. For repeated fields, a java.util.List is returned.
      Specified by:
        `getField` in interface `MessageOrBuilder`

    - #### getRepeatedFieldCount

          public int getRepeatedFieldCount(Descriptors.FieldDescriptor field)

      Description copied from interface: `MessageOrBuilder`
      Gets the number of elements of a repeated field. This is exactly equivalent to calling the generated "Count" accessor method corresponding to the field.
      Specified by:
        `getRepeatedFieldCount` in interface `MessageOrBuilder`

    - #### getRepeatedField

          public java.lang.Object getRepeatedField(Descriptors.FieldDescriptor field,
                                          int index)

      Description copied from interface: `MessageOrBuilder`
      Gets an element of a repeated field. For primitive fields, the boxed primitive value is returned. For enum fields, the EnumValueDescriptor for the value is returned. For embedded message fields, the sub-message is returned.
      Specified by:
        `getRepeatedField` in interface `MessageOrBuilder`

    - #### getUnknownFields

          public UnknownFieldSet getUnknownFields()

      Description copied from interface: `MessageOrBuilder`
      Get the `UnknownFieldSet` for this message.
      Specified by:
        `getUnknownFields` in interface `MessageOrBuilder`

    - #### parseUnknownField

          protected boolean parseUnknownField(CodedInputStream input,
                                  UnknownFieldSet.Builder unknownFields,
                                  ExtensionRegistryLite extensionRegistry,
                                  int tag)
                                       throws java.io.IOException

      Called by subclasses to parse an unknown field.
      Returns:
        `true` unless the tag is an end-group tag.
      Throws:
        `java.io.IOException`

    - #### parseWithIOException

          protected static <M extends Message> M parseWithIOException(Parser<M> parser,
                                                   java.io.InputStream input)
                                                           throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### parseWithIOException

          protected static <M extends Message> M parseWithIOException(Parser<M> parser,
                                                   java.io.InputStream input,
                                                   ExtensionRegistryLite extensions)
                                                           throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### parseWithIOException

          protected static <M extends Message> M parseWithIOException(Parser<M> parser,
                                                   CodedInputStream input)
                                                           throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### parseWithIOException

          protected static <M extends Message> M parseWithIOException(Parser<M> parser,
                                                   CodedInputStream input,
                                                   ExtensionRegistryLite extensions)
                                                           throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### parseDelimitedWithIOException

          protected static <M extends Message> M parseDelimitedWithIOException(Parser<M> parser,
                                                            java.io.InputStream input)
                                                                    throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### parseDelimitedWithIOException

          protected static <M extends Message> M parseDelimitedWithIOException(Parser<M> parser,
                                                            java.io.InputStream input,
                                                            ExtensionRegistryLite extensions)
                                                                    throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### writeTo

          public void writeTo(CodedOutputStream output)
                       throws java.io.IOException

      Description copied from interface: `MessageLite`
      Serializes the message and writes it to `output`. This does not flush or close the stream.
      Specified by:
        `writeTo` in interface `MessageLite`
      Overrides:
        `writeTo` in class `AbstractMessage`
      Throws:
        `java.io.IOException`

    - #### getSerializedSize

          public int getSerializedSize()

      Description copied from interface: `MessageLite`
      Get the number of bytes required to encode this message. The result is only computed on the first call and memoized after that.
      Specified by:
        `getSerializedSize` in interface `MessageLite`
      Overrides:
        `getSerializedSize` in class `AbstractMessage`

    - #### makeExtensionsImmutable

          protected void makeExtensionsImmutable()

      Used by parsing constructors in generated classes.

    - #### newBuilderForType

          protected abstract Message.Builder newBuilderForType(GeneratedMessageV3.BuilderParent parent)

      TODO(xiaofeng): remove this together with GeneratedMessageV3.BuilderParent.

    - #### newBuilderForType

          protected Message.Builder newBuilderForType(AbstractMessage.BuilderParent parent)

      Description copied from class: `AbstractMessage`
      Create a nested builder.
      Overrides:
        `newBuilderForType` in class `AbstractMessage`

    - #### internalGetMapField

          protected MapField internalGetMapField(int fieldNumber)

      Gets the map field with the given field number. This method should be overridden in the generated message class if the message contains map fields. Unlike other field types, reflection support for map fields can't be implemented based on generated public API because we need to access a map field as a list in reflection API but the generated API only allows us to access it as a map. This method returns the underlying map field directly and thus enables us to access the map field as a list.

    - #### writeReplace

          protected java.lang.Object writeReplace()
                                           throws java.io.ObjectStreamException

      Replaces this object in the output stream with a serialized form. Part of Java's serialization magic. Generated sub-classes must override this method by calling `return super.writeReplace();`
      Returns:
        a SerializedForm of this message
      Throws:
        `java.io.ObjectStreamException`

    - #### computeStringSize

          protected static int computeStringSize(int fieldNumber,
                              java.lang.Object value)

    - #### computeStringSizeNoTag

          protected static int computeStringSizeNoTag(java.lang.Object value)

    - #### writeString

          protected static void writeString(CodedOutputStream output,
                         int fieldNumber,
                         java.lang.Object value)
                                     throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### writeStringNoTag

          protected static void writeStringNoTag(CodedOutputStream output,
                              java.lang.Object value)
                                          throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### serializeIntegerMapTo

          protected static <V> void serializeIntegerMapTo(CodedOutputStream out,
                                       MapField<java.lang.Integer,V> field,
                                       MapEntry<java.lang.Integer,V> defaultEntry,
                                       int fieldNumber)
                                               throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### serializeLongMapTo

          protected static <V> void serializeLongMapTo(CodedOutputStream out,
                                    MapField<java.lang.Long,V> field,
                                    MapEntry<java.lang.Long,V> defaultEntry,
                                    int fieldNumber)
                                            throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### serializeStringMapTo

          protected static <V> void serializeStringMapTo(CodedOutputStream out,
                                      MapField<java.lang.String,V> field,
                                      MapEntry<java.lang.String,V> defaultEntry,
                                      int fieldNumber)
                                              throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### serializeBooleanMapTo

          protected static <V> void serializeBooleanMapTo(CodedOutputStream out,
                                       MapField<java.lang.Boolean,V> field,
                                       MapEntry<java.lang.Boolean,V> defaultEntry,
                                       int fieldNumber)
                                               throws java.io.IOException

      Throws:
        `java.io.IOException`