public class Kryo
extends java.lang.Object
| Constructor and Description | 
|---|
Kryo()
Creates a new Kryo with a  
DefaultClassResolver and a MapReferenceResolver. | 
Kryo(ClassResolver classResolver,
    ReferenceResolver referenceResolver)  | 
Kryo(ReferenceResolver referenceResolver)
Creates a new Kryo with a  
DefaultClassResolver. | 
| Modifier and Type | Method and Description | 
|---|---|
void | 
addDefaultSerializer(java.lang.Class type,
                    java.lang.Class<? extends Serializer> serializerClass)
Instances of the specified class will use the specified serializer. 
 | 
void | 
addDefaultSerializer(java.lang.Class type,
                    Serializer serializer)
Instances of the specified class will use the specified serializer. 
 | 
<T> T | 
copy(T object)
Returns a deep copy of the object. 
 | 
<T> T | 
copy(T object,
    Serializer serializer)
Returns a deep copy of the object using the specified serializer. 
 | 
<T> T | 
copyShallow(T object)
Returns a shallow copy of the object. 
 | 
<T> T | 
copyShallow(T object,
           Serializer serializer)
Returns a shallow copy of the object using the specified serializer. 
 | 
java.lang.ClassLoader | 
getClassLoader()  | 
ClassResolver | 
getClassResolver()  | 
ObjectMap | 
getContext()
Name/value pairs that are available to all serializers. 
 | 
Serializer | 
getDefaultSerializer(java.lang.Class type)
Returns the best matching serializer for a class. 
 | 
int | 
getDepth()
Returns the number of child objects away from the object graph root. 
 | 
static java.lang.Class[] | 
getGenerics(java.lang.reflect.Type genericType)
Returns the first level of classes or interfaces for a generic type. 
 | 
ObjectMap | 
getGraphContext()
Name/value pairs that are available to all serializers and are cleared after each object graph is serialized or
 deserialized. 
 | 
int | 
getNextRegistrationId()
Returns the lowest, next available integer ID. 
 | 
ReferenceResolver | 
getReferenceResolver()  | 
boolean | 
getReferences()  | 
Registration | 
getRegistration(java.lang.Class type)
If the class is not registered and  
setRegistrationRequired(boolean) is false, it is automatically registered
 using the default serializer. | 
Registration | 
getRegistration(int classID)  | 
Serializer | 
getSerializer(java.lang.Class type)
Returns the serializer for the registration for the specified class. 
 | 
boolean | 
isFinal(java.lang.Class type)
Returns true if the specified type is final. 
 | 
boolean | 
isRegistrationRequired()  | 
<T> T | 
newInstance(java.lang.Class<T> type)
Creates a new instance of a class using  
Registration.getInstantiator(). | 
Serializer | 
newSerializer(java.lang.Class<? extends Serializer> serializerClass,
             java.lang.Class type)
Creates a new instance of the specified serializer for serializing the specified class. 
 | 
Registration | 
readClass(Input input)
Reads a class and returns its registration. 
 | 
java.lang.Object | 
readClassAndObject(Input input)
Reads the class and object or null using the registered serializer. 
 | 
<T> T | 
readObject(Input input,
          java.lang.Class<T> type)
Reads an object using the registered serializer. 
 | 
<T> T | 
readObject(Input input,
          java.lang.Class<T> type,
          Serializer serializer)
Reads an object using the specified serializer. 
 | 
<T> T | 
readObjectOrNull(Input input,
                java.lang.Class<T> type)
Reads an object or null using the registered serializer. 
 | 
<T> T | 
readObjectOrNull(Input input,
                java.lang.Class<T> type,
                Serializer serializer)
Reads an object or null using the specified serializer. 
 | 
void | 
reference(java.lang.Object object)
Called by  
Serializer.read(Kryo, Input, Class) and Serializer.copy(Kryo, Object) before Kryo can be used to
 deserialize or copy child objects. | 
Registration | 
register(java.lang.Class type)
Registers the class using the lowest, next available integer ID and the  
default
 serializer. | 
Registration | 
register(java.lang.Class type,
        int id)
Registers the class using the specified ID and the  
default serializer. | 
Registration | 
register(java.lang.Class type,
        Serializer serializer)
Registers the class using the lowest, next available integer ID and the specified serializer. 
 | 
Registration | 
register(java.lang.Class type,
        Serializer serializer,
        int id)
Registers the class using the specified ID and serializer. 
 | 
Registration | 
register(Registration registration)
Stores the specified registration. 
 | 
void | 
reset()
Resets unregistered class names. 
 | 
void | 
setAutoReset(boolean autoReset)
If true (the default),  
reset() is called automatically after an entire object graph has been read or written. | 
void | 
setClassLoader(java.lang.ClassLoader classLoader)
Sets the classloader to resolve unregistered class names to classes. 
 | 
void | 
setDefaultSerializer(java.lang.Class<? extends Serializer> serializer)
Sets the serailzer to use when no  
default serializers match an object's type. | 
void | 
setInstantiatorStrategy(org.objenesis.strategy.InstantiatorStrategy strategy)
Sets the strategy used by  
newInstantiator(Class) for creating objects. | 
void | 
setMaxDepth(int maxDepth)
Sets the maxiumum depth of an object graph. 
 | 
void | 
setReferenceResolver(ReferenceResolver referenceResolver)
Sets the reference resolver and enables references. 
 | 
boolean | 
setReferences(boolean references)
If true, each appearance of an object in the graph after the first is stored as an integer ordinal. 
 | 
void | 
setRegistrationRequired(boolean registrationRequired)
If true, an exception is thrown when an unregistered class is encountered. 
 | 
Registration | 
writeClass(Output output,
          java.lang.Class type)
Writes a class and returns its registration. 
 | 
void | 
writeClassAndObject(Output output,
                   java.lang.Object object)
Writes the class and object or null using the registered serializer. 
 | 
void | 
writeObject(Output output,
           java.lang.Object object)
Writes an object using the registered serializer. 
 | 
void | 
writeObject(Output output,
           java.lang.Object object,
           Serializer serializer)
Writes an object using the specified serializer. 
 | 
void | 
writeObjectOrNull(Output output,
                 java.lang.Object object,
                 java.lang.Class type)
Writes an object or null using the registered serializer for the specified type. 
 | 
void | 
writeObjectOrNull(Output output,
                 java.lang.Object object,
                 Serializer serializer)
Writes an object or null using the specified serializer. 
 | 
public static final byte NULL
public static final byte NOT_NULL
public Kryo()
DefaultClassResolver and a MapReferenceResolver.public Kryo(ReferenceResolver referenceResolver)
DefaultClassResolver.referenceResolver - May be null to disable references.public Kryo(ClassResolver classResolver, ReferenceResolver referenceResolver)
referenceResolver - May be null to disable references.public void setDefaultSerializer(java.lang.Class<? extends Serializer> serializer)
default serializers match an object's type.
 Default is FieldSerializer.newDefaultSerializer(Class)public void addDefaultSerializer(java.lang.Class type,
                        Serializer serializer)
setDefaultSerializer(Class)public void addDefaultSerializer(java.lang.Class type,
                        java.lang.Class<? extends Serializer> serializerClass)
newSerializer(Class, Class). By default, the following classes have a default serializer set:
 
| boolean | Boolean | byte | Byte | char | 
| Character | short | Short | int | Integer | 
| long | Long | float | Float | double | 
| Double | String | byte[] | char[] | short[] | 
| int[] | long[] | float[] | double[] | String[] | 
| Object[] | Map | BigInteger | BigDecimal | KryoSerializable | 
| Collection | Date | Collections.emptyList | Collections.singleton | Currency | 
| StringBuilder | Enum | Collections.emptyMap | Collections.emptySet | Calendar | 
| StringBuffer | Class | Collections.singletonList | Collections.singletonMap | TimeZone | 
| TreeMap | EnumSet | 
Note that the order default serializers are added is important for a class that may match multiple types. The above default serializers always have a lower priority than subsequent default serializers that are added.
public Serializer getDefaultSerializer(java.lang.Class type)
public Serializer newSerializer(java.lang.Class<? extends Serializer> serializerClass, java.lang.Class type)
public Registration register(java.lang.Class type)
default
 serializer. If the class is already registered, the existing entry is updated with the new serializer. Registering a
 primitive also affects the corresponding primitive wrapper.
 Because the ID assigned is affected by the IDs registered before it, the order classes are registered is important when using this method. The order must be the same at deserialization as it was for serialization.
public Registration register(java.lang.Class type, int id)
default serializer. If the ID is
 already in use by the same type, the old entry is overwritten. If the ID is already in use by a different type, a
 KryoException is thrown. Registering a primitive also affects the corresponding primitive wrapper.
 IDs must be the same at deserialization as they were for serialization.
id - Must be >= 0. Smaller IDs are serialized more efficiently.public Registration register(java.lang.Class type, Serializer serializer)
Because the ID assigned is affected by the IDs registered before it, the order classes are registered is important when using this method. The order must be the same at deserialization as it was for serialization.
public Registration register(java.lang.Class type, Serializer serializer, int id)
KryoException is thrown. Registering a primitive
 also affects the corresponding primitive wrapper.
 IDs must be the same at deserialization as they were for serialization.
id - Must be >= 0. Smaller IDs are serialized more efficiently.public Registration register(Registration registration)
KryoException is thrown. Registering a primitive also affects the
 corresponding primitive wrapper.
 IDs must be the same at deserialization as they were for serialization.
 Registration can be suclassed to efficiently store per type information, accessible in serializers via
 getRegistration(Class).
public int getNextRegistrationId()
public Registration getRegistration(java.lang.Class type)
setRegistrationRequired(boolean) is false, it is automatically registered
 using the default serializer.java.lang.IllegalArgumentException - if the class is not registered and setRegistrationRequired(boolean) is true.ClassResolver.getRegistration(Class)public Registration getRegistration(int classID)
ClassResolver.getRegistration(int)public Serializer getSerializer(java.lang.Class type)
public Registration writeClass(Output output, java.lang.Class type)
type - May be null.ClassResolver.writeClass(Output, Class)public void writeObject(Output output, java.lang.Object object)
public void writeObject(Output output, java.lang.Object object, Serializer serializer)
public void writeObjectOrNull(Output output, java.lang.Object object, java.lang.Class type)
object - May be null.public void writeObjectOrNull(Output output, java.lang.Object object, Serializer serializer)
object - May be null.public void writeClassAndObject(Output output, java.lang.Object object)
object - May be null.public Registration readClass(Input input)
ClassResolver.readClass(Input)public <T> T readObject(Input input, java.lang.Class<T> type)
public <T> T readObject(Input input, java.lang.Class<T> type, Serializer serializer)
public <T> T readObjectOrNull(Input input, java.lang.Class<T> type)
public <T> T readObjectOrNull(Input input, java.lang.Class<T> type, Serializer serializer)
public java.lang.Object readClassAndObject(Input input)
public void reference(java.lang.Object object)
Serializer.read(Kryo, Input, Class) and Serializer.copy(Kryo, Object) before Kryo can be used to
 deserialize or copy child objects. Calling this method is unnecessary if Kryo is not used to deserialize or copy child
 objects.object - May be null, unless calling this method from Serializer.copy(Kryo, Object).public void reset()
graph context. If auto reset is true, this method is called
 automatically when an object graph has been completely serialized or deserialized. If overridden, the super method must be
 called.public <T> T copy(T object)
Serializer.copy(Kryo, Object).object - May be null.public <T> T copy(T object,
         Serializer serializer)
Serializer.copy(Kryo, Object).object - May be null.public <T> T copyShallow(T object)
Serializer.copy(Kryo, Object).object - May be null.public <T> T copyShallow(T object,
                Serializer serializer)
Serializer.copy(Kryo, Object).object - May be null.public ClassResolver getClassResolver()
public ReferenceResolver getReferenceResolver()
public void setClassLoader(java.lang.ClassLoader classLoader)
public java.lang.ClassLoader getClassLoader()
public void setRegistrationRequired(boolean registrationRequired)
 If false, when an unregistered class is encountered, its fully qualified class name will be serialized and the
 default serializer for the class used to serialize the object. Subsequent
 appearances of the class within the same object graph are serialized as an int id.
 
Registered classes are serialized as an int id, avoiding the overhead of serializing the class name, but have the drawback of needing to know the classes to be serialized up front.
public boolean isRegistrationRequired()
public boolean setReferences(boolean references)
MapReferenceResolver is used. This enables references to the same object and cyclic graphs to be serialized, but
 typically adds overhead of one byte per object. Default is true.public void setReferenceResolver(ReferenceResolver referenceResolver)
public boolean getReferences()
public void setInstantiatorStrategy(org.objenesis.strategy.InstantiatorStrategy strategy)
newInstantiator(Class) for creating objects. See StdInstantiatorStrategy to
 create objects via without calling any constructor. See SerializingInstantiatorStrategy to mimic Java's built-in
 serialization.strategy - May be null.public <T> T newInstance(java.lang.Class<T> type)
Registration.getInstantiator(). If the registration's instantiator is null,
 a new one is set using newInstantiator(Class).public ObjectMap getContext()
public ObjectMap getGraphContext()
public int getDepth()
public void setAutoReset(boolean autoReset)
public void setMaxDepth(int maxDepth)
Integer.MAX_VALUE.public boolean isFinal(java.lang.Class type)
This can be overridden to force non-final classes to be treated as final. Eg, if an application uses ArrayList extensively but never uses an ArrayList subclass, treating ArrayList as final could allow FieldSerializer to save 1-2 bytes per ArrayList field.
public static java.lang.Class[] getGenerics(java.lang.reflect.Type genericType)