kryo 序列化
package com.#.vde.compiler.util; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.io.Input; import com.esotericsoftware.kryo.io.Output; import com.esotericsoftware.kryo.serializers.CollectionSerializer; import com.esotericsoftware.kryo.serializers.JavaSerializer; import com.telenav.vde.compiler.feature.CityFeature; public class KryoHelper { public static <T> Kryo getKryo(Class<T> clazz) { Kryo kryo = new Kryo(); kryo.setReferences(false); kryo.setRegistrationRequired(true); CollectionSerializer serializer = new CollectionSerializer(); serializer.setElementClass(clazz, new JavaSerializer()); serializer.setElementsCanBeNull(false); kryo.register(clazz, new JavaSerializer()); kryo.register(ArrayList.class, serializer); return kryo; } /** * Serialization object to file through kryo * * @param <T> * * @param <T> * * @param citylist * @param filename */ public static <T extends Serializable> void setSerializationObjectByKryo(List<T> citylist, Class<T> clazz, String filename) { Date time0 = new Date(); try { Kryo kryo = getKryo(clazz); Output output = new Output(new FileOutputStream(filename)); kryo.writeObject(output, citylist); System.out.println("write done " + filename); System.out.println("time cost/ms : " + ((new Date()).getTime() - time0.getTime())); output.flush(); output.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); System.exit(-1); } } /** * get the serialization object * * @param <T> * * @param cla * @return */ @SuppressWarnings("unchecked") public static <T extends Serializable> List<T> getSerializationObjectByKryo(String filename, Class<T> clazz) { Date time0 = new Date(); Kryo kryo = getKryo(clazz); Input input; try { input = new Input(new FileInputStream(filename)); List<T> citylist = kryo.readObject(input, ArrayList.class); input.close(); System.out.println("read done"); System.out.println("time cost " + ((new Date()).getTime() - time0.getTime())); return citylist; } catch (FileNotFoundException e) { e.printStackTrace(); } return null; } }