package com.esotericsoftware.kryo;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Modifier;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Proxy;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.ConcurrentModificationException;
import java.util.Currency;
import java.util.Date;
import java.util.EnumSet;
import java.util.Map;
import java.util.TimeZone;
import java.util.TreeMap;
import org.objenesis.instantiator.ObjectInstantiator;
import org.objenesis.strategy.InstantiatorStrategy;
import org.objenesis.strategy.SerializingInstantiatorStrategy;
import org.objenesis.strategy.StdInstantiatorStrategy;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
import com.esotericsoftware.kryo.serializers.CollectionSerializer;
import com.esotericsoftware.kryo.serializers.DefaultArraySerializers.BooleanArraySerializer;
import com.esotericsoftware.kryo.serializers.DefaultArraySerializers.ByteArraySerializer;
import com.esotericsoftware.kryo.serializers.DefaultArraySerializers.CharArraySerializer;
import com.esotericsoftware.kryo.serializers.DefaultArraySerializers.DoubleArraySerializer;
import com.esotericsoftware.kryo.serializers.DefaultArraySerializers.FloatArraySerializer;
import com.esotericsoftware.kryo.serializers.DefaultArraySerializers.IntArraySerializer;
import com.esotericsoftware.kryo.serializers.DefaultArraySerializers.LongArraySerializer;
import com.esotericsoftware.kryo.serializers.DefaultArraySerializers.ObjectArraySerializer;
import com.esotericsoftware.kryo.serializers.DefaultArraySerializers.ShortArraySerializer;
import com.esotericsoftware.kryo.serializers.DefaultArraySerializers.StringArraySerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.BigDecimalSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.BigIntegerSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.BooleanSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.ByteSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.CalendarSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.CharSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.ClassSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.CollectionsEmptyListSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.CollectionsEmptyMapSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.CollectionsEmptySetSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.CollectionsSingletonListSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.CollectionsSingletonMapSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.CollectionsSingletonSetSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.CurrencySerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.DateSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.DoubleSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.EnumSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.EnumSetSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.FloatSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.IntSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.KryoSerializableSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.LongSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.ShortSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.StringBufferSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.StringBuilderSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.StringSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.TimeZoneSerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.TreeMapSerializer;
import com.esotericsoftware.kryo.serializers.FieldSerializer;
import com.esotericsoftware.kryo.serializers.MapSerializer;
import com.esotericsoftware.kryo.util.DefaultClassResolver;
import com.esotericsoftware.kryo.util.IdentityMap;
import com.esotericsoftware.kryo.util.IntArray;
import com.esotericsoftware.kryo.util.MapReferenceResolver;
import com.esotericsoftware.kryo.util.ObjectMap;
import com.esotericsoftware.kryo.util.Util;
import com.esotericsoftware.reflectasm.ConstructorAccess;
import static com.esotericsoftware.kryo.util.Util.*;
import static com.esotericsoftware.minlog.Log.*;
/** Maps classes to serializers so object graphs can be serialized automatically.
* @author Nathan Sweet <misc@n4te.com> */
public class Kryo {
static public final byte NULL = 0;
static public final byte NOT_NULL = 1;
static private final int REF = -1;
static private final int NO_REF = -2;
private Class<? extends Serializer> defaultSerializer = FieldSerializer.class;
private final ArrayList<DefaultSerializerEntry> defaultSerializers = new ArrayList(32);
private final int lowPriorityDefaultSerializerCount;
private final ClassResolver classResolver;
private int nextRegisterID;
private ClassLoader classLoader = getClass().getClassLoader();
private InstantiatorStrategy strategy;
private boolean registrationRequired;
private int depth, maxDepth = Integer.MAX_VALUE;
private boolean autoReset = true;
private volatile Thread thread;
private ObjectMap context, graphContext;
private ReferenceResolver referenceResolver;
private final IntArray readReferenceIds = new IntArray(0);
private boolean references;
private Object readObject;
private int copyDepth;
private boolean copyShallow;
private IdentityMap originalToCopy;
private Object needsCopyReference;
/** Creates a new Kryo with a {@link DefaultClassResolver} and a {@link MapReferenceResolver}. */
public Kryo () {
this(new DefaultClassResolver(), new MapReferenceResolver());
}
/** Creates a new Kryo with a {@link DefaultClassResolver}.
* @param referenceResolver May be null to disable references. */
public Kryo (ReferenceResolver referenceResolver) {
this(new DefaultClassResolver(), referenceResolver);
}
/** @param referenceResolver May be null to disable references. */
public Kryo (ClassResolver classResolver, ReferenceResolver referenceResolver) {
if (classResolver == null) throw new IllegalArgumentException("classResolver cannot be null.");
this.classResolver = classResolver;
classResolver.setKryo(this);
this.referenceResolver = referenceResolver;
if (referenceResolver != null) {
referenceResolver.setKryo(this);
references = true;
}
addDefaultSerializer(byte[].class, ByteArraySerializer.class);
addDefaultSerializer(char[].class, CharArraySerializer.class);
addDefaultSerializer(short[].class, ShortArraySerializer.class);
addDefaultSerializer(int[].class, IntArraySerializer.class);
addDefaultSerializer(long[].class, LongArraySerializer.class);
addDefaultSerializer(float[].class, FloatArraySerializer.class);
addDefaultSerializer(double[].class, DoubleArraySerializer.class);
addDefaultSerializer(boolean[].class, BooleanArraySerializer.class);
addDefaultSerializer(String[].class, StringArraySerializer.class);
addDefaultSerializer(Object[].class, ObjectArraySerializer.class);
addDefaultSerializer(BigInteger.class, BigIntegerSerializer.class);
addDefaultSerializer(BigDecimal.class, BigDecimalSerializer.class);
addDefaultSerializer(Clas
没有合适的资源?快使用搜索试试~ 我知道了~
java高效对象序列化反序列化工具kryo-2.21
共301个文件
html:218个
java:52个
jar:19个
需积分: 50 47 下载量 65 浏览量
2013-11-15
03:05:31
上传
评论
收藏 1.67MB ZIP 举报
温馨提示
Kryo 是一个快速高效的Java对象图形序列号框架,主要特点是性能、高效和易用。该项目用来序列化对象到文件、数据库或者网络。
资源推荐
资源详情
资源评论
收起资源包目录
java高效对象序列化反序列化工具kryo-2.21 (301个子文件)
.classpath 658B
stylesheet.css 11KB
titlebar.gif 10KB
background.gif 2KB
titlebar_end.gif 849B
tab.gif 291B
Kryo.html 95KB
Kryo.html 72KB
index-17.html 54KB
Input.html 50KB
Output.html 50KB
Input.html 46KB
Output.html 46KB
Serializer.html 43KB
index-4.html 42KB
index-22.html 41KB
index-18.html 33KB
FieldSerializer.html 32KB
Serializer.html 29KB
index-3.html 29KB
ObjectMap.html 27KB
IdentityMap.html 27KB
IntArray.html 27KB
overview-tree.html 26KB
index-9.html 26KB
CollectionSerializer.html 25KB
MapSerializer.html 24KB
TaggedFieldSerializer.html 23KB
KryoException.html 23KB
index-7.html 23KB
DefaultClassResolver.html 23KB
Registration.html 22KB
package-summary.html 22KB
CompatibleFieldSerializer.html 21KB
ListReferenceResolver.html 20KB
MapReferenceResolver.html 20KB
DefaultArraySerializers.ObjectArraySerializer.html 20KB
BeanSerializer.html 20KB
IdentityObjectIntMap.html 20KB
DefaultSerializers.html 19KB
package-tree.html 19KB
DeflateSerializer.html 19KB
InputChunked.html 19KB
IntMap.html 18KB
DefaultSerializers.StringBuilderSerializer.html 18KB
DefaultSerializers.StringBufferSerializer.html 18KB
DefaultSerializers.CalendarSerializer.html 18KB
DefaultArraySerializers.StringArraySerializer.html 18KB
DefaultArraySerializers.BooleanArraySerializer.html 18KB
DefaultArraySerializers.DoubleArraySerializer.html 18KB
DefaultArraySerializers.ShortArraySerializer.html 18KB
DefaultSerializers.EnumSetSerializer.html 18KB
DefaultArraySerializers.FloatArraySerializer.html 18KB
DefaultArraySerializers.ByteArraySerializer.html 18KB
DefaultArraySerializers.CharArraySerializer.html 18KB
DefaultArraySerializers.LongArraySerializer.html 18KB
DefaultArraySerializers.IntArraySerializer.html 18KB
DefaultSerializers.DateSerializer.html 18KB
BlowfishSerializer.html 18KB
DefaultSerializers.KryoSerializableSerializer.html 17KB
OutputChunked.html 16KB
allclasses-frame.html 16KB
DefaultSerializers.CollectionsSingletonListSerializer.html 16KB
DefaultSerializers.CollectionsSingletonMapSerializer.html 16KB
DefaultSerializers.CollectionsSingletonSetSerializer.html 16KB
DefaultSerializers.CollectionsEmptySetSerializer.html 16KB
DefaultSerializers.CollectionsEmptyMapSerializer.html 16KB
DefaultSerializers.CollectionsEmptyListSerializer.html 16KB
DefaultSerializers.TimeZoneSerializer.html 16KB
DefaultSerializers.CurrencySerializer.html 16KB
DefaultSerializers.StringSerializer.html 16KB
DefaultSerializers.BigIntegerSerializer.html 16KB
DefaultSerializers.BigDecimalSerializer.html 16KB
DefaultSerializers.EnumSerializer.html 16KB
DefaultSerializers.BooleanSerializer.html 15KB
index-15.html 15KB
DefaultSerializers.CharSerializer.html 15KB
DefaultSerializers.DoubleSerializer.html 15KB
DefaultSerializers.ClassSerializer.html 15KB
DefaultSerializers.ShortSerializer.html 15KB
DefaultSerializers.IntSerializer.html 15KB
DefaultSerializers.FloatSerializer.html 15KB
DefaultSerializers.LongSerializer.html 15KB
FieldSerializer.CachedField.html 15KB
DefaultSerializers.ByteSerializer.html 15KB
JavaSerializer.html 15KB
IdentityMap.Entries.html 15KB
ObjectMap.Entries.html 15KB
ClassResolver.html 15KB
allclasses-noframe.html 15KB
index-19.html 14KB
IdentityMap.Values.html 14KB
DefaultSerializers.TreeMapSerializer.html 14KB
ObjectMap.Values.html 14KB
Util.html 14KB
ReferenceResolver.html 14KB
Registration.html 13KB
ByteBufferInputStream.html 13KB
IdentityMap.Keys.html 13KB
ByteBufferOutputStream.html 13KB
共 301 条
- 1
- 2
- 3
- 4
资源评论
ucasliming
- 粉丝: 125
- 资源: 28
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功