packagejavax.utils;importjava.io.ByteArrayInputStream;importjava.io.ByteArrayOutputStream;importjava.io.IOException;importjava.io.ObjectInputStream;importjava.io.ObjectOutputStream;importjava.util.HashMap;importjava.util.Map;/*** 序列化工具类
*
*@authorLogan
*@version1.0.0
**/
public classSerializationUtils {/*** 序列化对象
*
*@paramobj 对象
*@return序列化后的字节数组
*@throwsIOException*/
public static byte[] serialize(Object obj) throwsIOException {if (null ==obj) {return null;
}try(
ByteArrayOutputStream byteArrayOutputStream= newByteArrayOutputStream();
ObjectOutputStream out= newObjectOutputStream(byteArrayOutputStream);
) {
out.writeObject(obj);returnbyteArrayOutputStream.toByteArray();
}
}/*** 反序列化
*
*@parambytes 对象序列化后的字节数组
*@return反序列化后的对象
*@throwsIOException
*@throwsClassNotFoundException*/
public static Object deserialize(byte[] bytes) throwsIOException, ClassNotFoundException {if (null ==bytes) {return null;
}try(
ByteArrayInputStream byteArrayInputStream= newByteArrayInputStream(bytes);
ObjectInputStream in= newObjectInputStream(byteArrayInputStream);
) {returnin.readObject();
}
}/*** 反序列化成指定类型的对象
*
*@parambytes 对象序列化后的字节数组
*@paramc 反序列化后的对象类型
*@return指定类型的对象
*@throwsIOException
*@throwsClassNotFoundException*/
public static T deserialize(byte[] bytes, Class c) throwsClassNotFoundException, IOException {returnc.cast(deserialize(bytes));
}public static voidmain(String[] args) {try{
Map map = new HashMap<>();
map.put("name", "Logan");
map.put("age", 26);byte[] bytes =serialize(map);
Map, ?> map2 = deserialize(bytes, Map.class);
System.out.println(map2);
System.out.println(map.equals(map2));
System.out.println(map==map2);
}catch(Exception e) {
e.printStackTrace();
}
}
}