public interface DataSerializable extends Serializable
ObjectOutputStream
, a
DataSerializable
can serialize itself to a DataOutput
. By implementing this interface, objects can be
serialized faster and in a more compact format than standard Java
serialization. The DataSerializer
class contains a number
of static methods that may be helpful to implementations of
DataSerializable
.
When possible, GemFire respects the DataSerializable
contract to provide optimal object serialization. For instance, if
a DataSerializable
object is
placed into a distributed
cache region, its toData
method will be used to
serialize it when it is sent to another member of the distributed
system.
To avoid the overhead of Java reflection,
DataSerializable
classes may register an Instantiator
to be used during deserialization. Alternatively,
classes that implement DataSerializable
can provide a
zero-argument constructor that will be invoked when they are read
with DataSerializer.readObject(java.io.DataInput)
.
Some classes (especially third-party classes that you may not have
the source code to) cannot be modified to implement
DataSerializable
. These classes can be data
serialized by an instance of DataSerializer
.
DataSerializable
offers improved performance over
standard Java serialization, but does not offer all of the features
of standard Java serialization. In particular, data serialization
does not attempt to maintain referential integrity among the
objects it is writing or reading. As a result, data serialization
should not be used with complex object graphs. Attempting to data
serialize graphs that contain object cycles will result in infinite
recursion and a StackOverflowError
. Attempting to
deserialize an object graph that contains multiple reference
paths to the same object will result in multiple copies of the
objects that are referred to through multiple paths.
Serializable
,
DataSerializer
,
Instantiator
Modifier and Type | Interface and Description |
---|---|
static interface |
DataSerializable.Replaceable
Replaceable allows an object to write an alternative
version of itself to a DataOutput . |
Modifier and Type | Method and Description |
---|---|
void |
fromData(DataInput in)
Reads the state of this object as primitive data from the given
DataInput . |
void |
toData(DataOutput out)
Writes the state of this object as primitive data to the given
DataOutput . |
void toData(DataOutput out) throws IOException
DataOutput
.
Since 5.7 it is possible for any method call to the specified
DataOutput
to throw GemFireRethrowable
.
It should not be caught by user code.
If it is it must be rethrown.
IOException
- A problem occurs while writing to out
void fromData(DataInput in) throws IOException, ClassNotFoundException
DataInput
.IOException
- A problem occurs while reading from in
ClassNotFoundException
- A class could not be loaded while reading from
in
Copyright © 1997-2017 Pivotal Software, Inc. All rights reserved.