在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属性则会抛出异常。