Java中序列化是指将Java对象通过变换成为字节序列,来将该对象持久化到硬盘中。并且字节序列也很适合网络传输,因此如果需要在网络中传递Java对象,可以在其先序列化后进行传输,并由接收方进行反序列化操作。Java中反序列化是指将序列化的字节序列重新组织成Java对象,实际上,序列化是指将Java对象转换为字节序列,而反序列化是指将字节序列转换为Java对象。
假设存在一个User对象,其代码如下:
public class User implements Serializable{
public String name;
public int age;
}
如果需要进行序列化,可以:
User user = new User();
user.name = "XuJun";
user.age = 13;
File file = new File("user.txt");
ObjectOutputStream objOut = new ObjectOutputStream(new FileOutputStream(file));
objOut.writeObject(user);
objOut.close();
此时,user对象就被序列化到了user.txt中
如果需要进行反序列化的操作,可以:
User user = null;
File file = new File("user.txt");
ObjectInputStream objInput = new ObjectInputStream(new FileInputStream(file));
user = (User)objInput.readObject();
objInput.close();
注意:
-
被static、transient修饰的字段不会被序列化
-
建议为要序列化的类添加
serialVersionUID
,如果使用者没有添加,编译期会自动添加一个