public class HashMapReferenceResolver extends java.lang.Object implements ReferenceResolver
IdentityHashMap to track objects that have already been written. This can handle a graph with any number of
objects, but is slightly slower than ListReferenceResolver for graphs with few objects. Compared to
MapReferenceResolver, this may provide better performance for object graphs with a very high number of objects since
the IdentityHashMap does less work for put, even though put allocates.| Modifier and Type | Field and Description |
|---|---|
protected Kryo |
kryo |
protected java.util.ArrayList |
readObjects |
protected java.util.IdentityHashMap<java.lang.Object,java.lang.Integer> |
writtenObjects |
| Constructor and Description |
|---|
HashMapReferenceResolver() |
| Modifier and Type | Method and Description |
|---|---|
int |
addWrittenObject(java.lang.Object object)
Returns a new ID for an object that is being written for the first time.
|
java.lang.Object |
getReadObject(java.lang.Class type,
int id)
Returns the object for the specified ID.
|
int |
getWrittenId(java.lang.Object object)
Returns an ID for the object if it has been written previously, otherwise returns -1.
|
int |
nextReadId(java.lang.Class type)
Reserves the ID for the next object that will be read.
|
void |
reset()
Called by
Kryo.reset(). |
void |
setKryo(Kryo kryo)
Sets the Kryo instance that this ClassResolver will be used for.
|
void |
setReadObject(int id,
java.lang.Object object)
Sets the ID for an object that has been read.
|
boolean |
useReferences(java.lang.Class type)
Returns false for all primitive wrappers and enums.
|
protected Kryo kryo
protected final java.util.IdentityHashMap<java.lang.Object,java.lang.Integer> writtenObjects
protected final java.util.ArrayList readObjects
public void setKryo(Kryo kryo)
ReferenceResolversetKryo in interface ReferenceResolverpublic int addWrittenObject(java.lang.Object object)
ReferenceResolveraddWrittenObject in interface ReferenceResolverpublic int getWrittenId(java.lang.Object object)
ReferenceResolvergetWrittenId in interface ReferenceResolverpublic int nextReadId(java.lang.Class type)
ReferenceResolvernextReadId in interface ReferenceResolvertype - The type of object that will be read.public void setReadObject(int id,
java.lang.Object object)
ReferenceResolversetReadObject in interface ReferenceResolverid - The ID from ReferenceResolver.nextReadId(Class).public java.lang.Object getReadObject(java.lang.Class type,
int id)
ReferenceResolverReferenceResolver.setReadObject(int, Object).getReadObject in interface ReferenceResolverpublic void reset()
ReferenceResolverKryo.reset().reset in interface ReferenceResolverpublic boolean useReferences(java.lang.Class type)
useReferences in interface ReferenceResolvertype - Will never be a primitive type, but may be a primitive type wrapper.Copyright © 2019. All Rights Reserved.