什么是序列化(what)
序列化是java本身提供的一种保存对象的方式。虽然我们可以自己提供方法保存,但是官方提供的无疑是更加完善和靠谱的。
序列化注意事项(caution)
- 序列化的对象需哟实现java.io.Serializable接口,并且如果这个类是父类,子类将同样拥有序列化的功能。
- 序列化只会保存对象的非静态成员变量,无论是public还是protected或者是private,都保存。但是其他例如静态的变量,函数这些都不保存。除此之外他还要保存一些额外信息保证它能够恢复回来。
- 序列化是可以传递的,比如这个对象里面的一个成员变量是一个可序列化的对象,那么它也会被递归的序列化。如果不是的话,那么就会报错。不过我们可以将其标记位transient,这样就可以了。
序列化在什么时候用(when)
- 将对象保存到文件中,一般不是本地。
- 保存到数据库中
- 网络传输中
如何序列化(how)
1)Make a FileOutputStream
FileOutputStream fs = new FileOutputStream(“foo.ser”);
2)Make a ObjectOutputStream
ObjectOutputStream os = new ObjectOutputStream(fs);
3)write the object
os.writeObject(myObject1);
os.writeObject(myObject2);
os.writeObject(myObject3);
4) close the ObjectOutputStream
os.close();