在Java中java.io.Serializable 用于实现对象的序列化而开发的接口。
java.io.Serializable接口是一个没有任何方法和属性的接口只提供一个标示的作用。
所有要序列化的对象都要实现Serializable接口。
未实现序列化接口的对象进行序列化的时候发生的错误。
java.io.NotSerializableException: com.javaeye.xiaobian.seri.User at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.writeObject(Unknown Source) at com.javaeye.xiaobian.seri.SerialzeTest.main(SerialzeTest.java:19)
序列化:
File test = new File("e:\\test.seri"); FileOutputStream out = new FileOutputStream(test); ObjectOutputStream oout = new ObjectOutputStream(out); User user = new User(); user.setName("example1"); oout.writeObject(user); FileInputStream in = new FileInputStream(test); ObjectInputStream oin = new ObjectInputStream(in); User u = (User) oin.readObject(); System.out.println(u.getName()); System.out.println(u.getPass());
User类:
public class User implements Serializable { private static final long serialVersionUID = -7020619477594468968L; private String name; private String pass; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } }
serialVersionUID的作用:
1.先保存一个序列化的对象User。
2.更改对象的属性添加Pass属性。
3.反序列化User对象这个时候获取的Pass属性为null。
4.如果没有serialVersionUID属性则会抛出异常。