序列化对象:
public static byte[] serialize(Object object) {
byte[] bytes = null;
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(object);
bytes = baos.toByteArray();
} catch (Exception e) {
e.printStackTrace();
}
return bytes;
}
传入的对象可以为null,最终返回的byte数组不为null,长度为5,内容是[-84,-19,0,5,112],原因未知。
反序列化:
public static Object unserialize(byte[] bytes) {
Object object = null;
try {
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bais);
object = ois.readObject();
closeStreamQuiet(ois);
closeStreamQuiet(bais);
} catch (Exception e) {
e.printStackTrace();
}
return object;
}
不能传null,报NPE。但是如果传的是上方序列化null对象返回的byte数组,可以返回null对象。
总结:部分场景需要对null做缓存