public
abstract
class
GeneratedMessage
extends
AbstractMessage
implements
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.
Inheritance
Object > AbstractMessageLite<MessageType,BuilderType> > AbstractMessage > GeneratedMessageImplements
SerializableStatic Fields
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.
Static Methods
<ContainingType,Type>newFileScopedGeneratedExtension(Class singularType, Message defaultInstance)
public
static
GeneratedMessage
.
GeneratedExtension<ContainingType
,
Type
>
< ContainingType
,
Type>newFileScopedGeneratedExtension
(
Class
singularType
,
Message
defaultInstance
)
For use by generated code only.
<ContainingType,Type>newFileScopedGeneratedExtension(Class singularType, Message defaultInstance, String descriptorOuterClass, String extensionName)
public
static
GeneratedMessage
.
GeneratedExtension<ContainingType
,
Type
>
< ContainingType
,
Type>newFileScopedGeneratedExtension
(
Class
singularType
,
Message
defaultInstance
,
String
descriptorOuterClass
,
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.
<ContainingType,Type>newMessageScopedGeneratedExtension(Message scope, int descriptorIndex, Class singularType, Message defaultInstance)
public
static
GeneratedMessage
.
GeneratedExtension<ContainingType
,
Type
>
< ContainingType
,
Type>newMessageScopedGeneratedExtension
(
Message
scope
,
int
descriptorIndex
,
Class
singularType
,
Message
defaultInstance
)
For use by generated code only.
<ContainingType,Type>newMessageScopedGeneratedExtension(Message scope, String name, Class singularType, Message defaultInstance)
public
static
GeneratedMessage
.
GeneratedExtension<ContainingType
,
Type
>
< ContainingType
,
Type>newMessageScopedGeneratedExtension
(
Message
scope
,
String
name
,
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.
<M>parseDelimitedWithIOException(Parser<M> parser, InputStream input)
protected
static
M
< M>parseDelimitedWithIOException
(
Parser<M>
parser
,
InputStream
input
)
M
<M>parseDelimitedWithIOException(Parser<M> parser, InputStream input, ExtensionRegistryLite extensions)
protected
static
M
< M>parseDelimitedWithIOException
(
Parser<M>
parser
,
InputStream
input
,
ExtensionRegistryLite
extensions
)
M
<M>parseWithIOException(Parser<M> parser, CodedInputStream input)
protected
static
M
< M>parseWithIOException
(
Parser<M>
parser
,
CodedInputStream
input
)
M
<M>parseWithIOException(Parser<M> parser, CodedInputStream input, ExtensionRegistryLite extensions)
protected
static
M
< M>parseWithIOException
(
Parser<M>
parser
,
CodedInputStream
input
,
ExtensionRegistryLite
extensions
)
M
<M>parseWithIOException(Parser<M> parser, InputStream input)
protected
static
M
< M>parseWithIOException
(
Parser<M>
parser
,
InputStream
input
)
M
<M>parseWithIOException(Parser<M> parser, InputStream input, ExtensionRegistryLite extensions)
protected
static
M
< M>parseWithIOException
(
Parser<M>
parser
,
InputStream
input
,
ExtensionRegistryLite
extensions
)
M
computeStringSize(int fieldNumber, Object value)
protected
static
int
computeStringSize
(
int
fieldNumber
,
Object
value
)
computeStringSizeNoTag(Object value)
protected
static
int
computeStringSizeNoTag
(
Object
value
)
writeString(CodedOutputStream output, int fieldNumber, Object value)
protected
static
void
writeString
(
CodedOutputStream
output
,
int
fieldNumber
,
Object
value
)
writeStringNoTag(CodedOutputStream output, Object value)
protected
static
void
writeStringNoTag
(
CodedOutputStream
output
,
Object
value
)
Constructors
GeneratedMessage()
protected
GeneratedMessage
()
GeneratedMessage(GeneratedMessage.Builder<?> builder)
protected
GeneratedMessage
(
GeneratedMessage
.
Builder
< ?
>
builder
)
Fields
unknownFields
protected
UnknownFieldSet
unknownFields
For use by generated code only.
Methods
getAllFields()
public
Map<Descriptors
.
FieldDescriptor
,
Object
>
getAllFields
()
getDescriptorForType()
public
Descriptors
.
Descriptor
getDescriptorForType
()
getField(Descriptors.FieldDescriptor field)
public
Object
getField
(
Descriptors
.
FieldDescriptor
field
)
getOneofFieldDescriptor(Descriptors.OneofDescriptor oneof)
public
Descriptors
.
FieldDescriptor
getOneofFieldDescriptor
(
Descriptors
.
OneofDescriptor
oneof
)
TODO(jieluo): Clear it when all subclasses have implemented this method.
getParserForType()
public
Parser
< ?
extends
GeneratedMessage
>
getParserForType
()
getRepeatedField(Descriptors.FieldDescriptor field, int index)
public
Object
getRepeatedField
(
Descriptors
.
FieldDescriptor
field
,
int
index
)
getRepeatedFieldCount(Descriptors.FieldDescriptor field)
public
int
getRepeatedFieldCount
(
Descriptors
.
FieldDescriptor
field
)
getSerializedSize()
public
int
getSerializedSize
()
Get the number of bytes required to encode this message. The result is only computed on the first call and memoized after that.
If this message requires more than Integer.MAX_VALUE bytes to encode, the return value will be smaller than the actual number of bytes required and might be negative.
getUnknownFields()
public
UnknownFieldSet
getUnknownFields
()
hasField(Descriptors.FieldDescriptor field)
public
boolean
hasField
(
Descriptors
.
FieldDescriptor
field
)
hasOneof(Descriptors.OneofDescriptor oneof)
public
boolean
hasOneof
(
Descriptors
.
OneofDescriptor
oneof
)
TODO(jieluo): Clear it when all subclasses have implemented this method.
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.
internalGetMapField(int fieldNumber)
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.
isInitialized()
public
boolean
isInitialized
()
Returns true if all required fields in the message and all embedded messages are set, false otherwise.
makeExtensionsImmutable()
protected
void
makeExtensionsImmutable
()
Used by parsing constructors in generated classes.
newBuilderForType(AbstractMessage.BuilderParent parent)
protected
Message
.
Builder
newBuilderForType
(
AbstractMessage
.
BuilderParent
parent
)
Create a nested builder.
newBuilderForType(GeneratedMessage.BuilderParent parent)
protected
abstract
Message
.
Builder
newBuilderForType
(
GeneratedMessage
.
BuilderParent
parent
)
TODO(xiaofeng): remove this together with GeneratedMessage.BuilderParent.
parseUnknownField(CodedInputStream input, UnknownFieldSet.Builder unknownFields, ExtensionRegistryLite extensionRegistry, int tag)
protected
boolean
parseUnknownField
(
CodedInputStream
input
,
UnknownFieldSet
.
Builder
unknownFields
,
ExtensionRegistryLite
extensionRegistry
,
int
tag
)
Called by subclasses to parse an unknown field.
input
unknownFields
extensionRegistry
tag
writeReplace()
protected
Object
writeReplace
()
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();
writeTo(CodedOutputStream output)
public
void
writeTo
(
CodedOutputStream
output
)
Serializes the message and writes it to output
. This does not flush or close the
stream.