什么是Java序列化
Java序列化是将对象的状态保存为一组字节,Java反序列化是将这些字节组装成对象。必须注意地是,对象序列化保存的是对象的"状态",即它的成员变量。由此可知,对象序列化不会关注类中的静态变量。
为什么会有Java序列化
一般情况下,只有JVM处于运行时,Java对象才能存在,当JVM关闭后,这些对象也随之消失.但是有时候我们需要保存某些Java对象,以免Jvm宕机后数据丢失.这时我们就可以把Java对象序列化然后保存到本地.除了在持久化对象时会用到对象序列化之外,当使用RMI(远程方法调用),或在网络中传递对象时,都会用到对象序列化.
怎么做
- 首先我们要让对象实现Serializable(最好重写serialVersionUID)
- 服务端
Cat cat = new Cat(3, "huangzp");
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(new File("D:/cat.out")));
out.writeObject(cat);
out.close();
- 客户端
ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File("D:/cat.out")));
Cat cat = (Cat)in.readObject();
System.out.println(cat);
in.close();
PS: 要保证客户端和服务端的序列化类的包名和序列uid要保持一致,否则无法被序列化
transient
被transient修饰的字段不用被序列化
网友评论