对象序列化的目标是将对象保存到磁盘中,或允许在网络中直接传输对象。对象序列 化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制 流持久地保存在磁盘上,通过网络将这种二进制流传输到另一个网络节点。其他程序 一旦获得了这种二进制流(无论是从磁盘中获取的,还是通过网络获取的),都可以 将这种二进制流恢复成原来的Java对象。
序列化的含义和意义
序列化机制允许将实现序列化的Java对象转换成字节序列,这些字节序列可以保存在 磁盘上,或通过网络传输,以备以后重新恢复成原来的对象。序列化机制使得对象可 以脱离程序的运行而独立存在。 对象的序列化(Serialize)指将一个Java对象写入IO流中,如果需要让某个对象支持序列化机制,则必须让它的类是可序列化的(serializable)
为了让某个类是可序列化的,该类必须实现如下两个接口之一:
- Serializable(常用)
- ExternalizableJava
第一步肯定是创建一个类来实现一下Serializable这个接口:
public class Test implements Serializable{
//生成一个Serializable的序列id
private static final long serialVersionUID = 1L;
//声明两个变量
private String profession;
private int classname;
//无参构造器
public Test(){
}
//有参构造器
public Test (String profession, int classname) {
super();
this.profession = profession;
this.classname = classname;
}
//get 和 set 方法
public String getProfession() {
return profession;
}
public void setProfession(String profession) {
this.profession = profession;
}
public int getClassname() {
return classname;
}
public void setClassname(int classname) {
this.classname = classname;
}
}
把类创建完之后就可以创建另一个类来实现序列化了
public class ObjectStreamDemo {
public static void main(String[] args) throws IOException, ClassNotFoundException{
//实例化刚才新建的类
Test test = new Test();
//变量赋值
test.setProfession("IT专业");
test.setClassname(1702);
//创建一个输出流
OutputStream out = new FileOutputStream("H:/MyCode/test.txt");
//实例化ObjectOutputStream
ObjectOutputStream outputStream = new ObjectOutputStream(out);
//把对象序列化,写入文件
outputStream.writeObject(test);
//关闭输出流
outputStream.close();
}
}