Package com.google.protobuf

## Class GeneratedMessage

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

All Implemented Interfaces:
  `Message`, `MessageLite`, `MessageLiteOrBuilder`, `MessageOrBuilder`, `java.io.Serializable`

Direct Known Subclasses:
  `DescriptorProtos.DescriptorProto`, `DescriptorProtos.DescriptorProto.ExtensionRange`, `DescriptorProtos.EnumDescriptorProto`, `DescriptorProtos.EnumValueDescriptorProto`, `DescriptorProtos.FieldDescriptorProto`, `DescriptorProtos.FileDescriptorProto`, `DescriptorProtos.FileDescriptorSet`, `DescriptorProtos.MethodDescriptorProto`, `DescriptorProtos.OneofDescriptorProto`, `DescriptorProtos.ServiceDescriptorProto`, `DescriptorProtos.SourceCodeInfo`, `DescriptorProtos.SourceCodeInfo.Location`, `DescriptorProtos.UninterpretedOption`, `DescriptorProtos.UninterpretedOption.NamePart`, `GeneratedMessage.ExtendableMessage`

    public abstract class GeneratedMessage
    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.

Author:
  kenton@google.com Kenton Varda
See Also:
  Serialized Form

### Nested Class Summary

Nested Classes
`static class` `GeneratedMessage.Builder<BuilderType extends GeneratedMessage.Builder>`
`protected static interface` `GeneratedMessage.BuilderParent` Interface for the parent of a Builder that allows the builder to communicate invalidations back to the parent for use when using nested builders.
`static class` `GeneratedMessage.ExtendableBuilder<MessageType extends GeneratedMessage.ExtendableMessage,​BuilderType extends GeneratedMessage.ExtendableBuilder>` Generated message builders for message types that contain extension ranges subclass this.
`static class` `GeneratedMessage.ExtendableMessage<MessageType extends GeneratedMessage.ExtendableMessage>` Generated message classes for message types that contain extension ranges subclass this.
`static interface` `GeneratedMessage.ExtendableMessageOrBuilder<MessageType extends GeneratedMessage.ExtendableMessage>`
`static class` `GeneratedMessage.FieldAccessorTable` Users should ignore this class.
`static class` `GeneratedMessage.GeneratedExtension<ContainingType extends Message,​Type>` Type used to represent generated extensions.

### Field Summary

Fields
`protected static boolean` `alwaysUseFieldBuilders` For testing.

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

`memoizedHashCode`

### Constructor Summary

Constructors
`protected` `GeneratedMessage()`
`protected` `GeneratedMessage​(GeneratedMessage.Builder<?> builder)`

### Method Summary

All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
`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 GeneratedMessage>` `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.
`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 GeneratedMessage.FieldAccessorTable` `internalGetFieldAccessorTable()` Get the FieldAccessorTable for this type.
`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 abstract Message.Builder` `newBuilderForType​(GeneratedMessage.BuilderParent parent)`
`static <ContainingType extends Message,​Type> GeneratedMessage.GeneratedExtension<ContainingType,​Type>` `newFileScopedGeneratedExtension​(java.lang.Class singularType, Message defaultInstance)` For use by generated code only.
`static <ContainingType extends Message,​Type> GeneratedMessage.GeneratedExtension<ContainingType,​Type>` `newFileScopedGeneratedExtension​(java.lang.Class singularType, Message defaultInstance, java.lang.String descriptorOuterClass, java.lang.String extensionName)` Used in proto1 generated code only.
`static <ContainingType extends Message,​Type> GeneratedMessage.GeneratedExtension<ContainingType,​Type>` `newMessageScopedGeneratedExtension​(Message scope, int descriptorIndex, java.lang.Class singularType, Message defaultInstance)` For use by generated code only.
`static <ContainingType extends Message,​Type> GeneratedMessage.GeneratedExtension<ContainingType,​Type>` `newMessageScopedGeneratedExtension​(Message scope, java.lang.String name, java.lang.Class singularType, Message defaultInstance)` Used in proto1 generated code only.
`protected boolean` `parseUnknownField​(CodedInputStream input, UnknownFieldSet.Builder unknownFields, ExtensionRegistryLite extensionRegistry, int tag)` Called by subclasses to parse an unknown field.
`protected java.lang.Object` `writeReplace()` Replaces this object in the output stream with a serialized form.

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

`equals, findInitializationErrors, getInitializationErrorString, getSerializedSize, hashCode, hashFields, toString, writeTo`

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

`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.

### Constructor Detail

#### GeneratedMessage

    protected GeneratedMessage()

#### GeneratedMessage

    protected GeneratedMessage​(GeneratedMessage.Builder<?> builder)

### Method Detail

#### getParserForType

    public Parser<? extends GeneratedMessage> 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 GeneratedMessage.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`

#### makeExtensionsImmutable

    protected void makeExtensionsImmutable()

Used by parsing constructors in generated classes.

#### newBuilderForType

    protected abstract Message.Builder newBuilderForType​(GeneratedMessage.BuilderParent parent)

#### newMessageScopedGeneratedExtension

    public static <ContainingType extends Message,​Type> GeneratedMessage.GeneratedExtension<ContainingType,​Type> newMessageScopedGeneratedExtension​(Message scope,
                                                                                                                                                                int descriptorIndex,
                                                                                                                                                                java.lang.Class singularType,
                                                                                                                                                                Message defaultInstance)

For use by generated code only.

#### newFileScopedGeneratedExtension

    public static <ContainingType extends Message,​Type> GeneratedMessage.GeneratedExtension<ContainingType,​Type> newFileScopedGeneratedExtension​(java.lang.Class singularType,
                                                                                                                                                             Message defaultInstance)

For use by generated code only.

#### newMessageScopedGeneratedExtension

    public static <ContainingType extends Message,​Type> GeneratedMessage.GeneratedExtension<ContainingType,​Type> newMessageScopedGeneratedExtension​(Message scope,
                                                                                                                                                                java.lang.String name,
                                                                                                                                                                java.lang.Class singularType,
                                                                                                                                                                Message defaultInstance)

Used in proto1 generated code only. After enabling bridge, we can define proto2 extensions (the extended type is a proto2 mutable message) in a proto1 .proto file. For these extensions we should generate proto2 GeneratedExtensions.

#### newFileScopedGeneratedExtension

    public static <ContainingType extends Message,​Type> GeneratedMessage.GeneratedExtension<ContainingType,​Type> newFileScopedGeneratedExtension​(java.lang.Class singularType,
                                                                                                                                                             Message defaultInstance,
                                                                                                                                                             java.lang.String descriptorOuterClass,
                                                                                                                                                             java.lang.String extensionName)

Used in proto1 generated code only. After enabling bridge, we can define proto2 extensions (the extended type is a proto2 mutable message) in a proto1 .proto file. For these extensions we should generate proto2 GeneratedExtensions.

#### 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`