java中对象的串行化(Serialization)
来源:互联网 发布:小米4s无法连接3g网络 编辑:程序博客网 时间:2024/05/22 15:52
1. 什么是串行化
对象的寿命通常随着生成该对象的
2. 串行化的目的
串行化的目的是为
二、串行化方法
在java.io包中,接口Serializable用来作为实现对象串行化的工具,只有实现了Serializable的类的对象才可以被串行化。
1. 定义一个可串行化对象
public class Student implements Serializable{
int id; //学号
String name; //姓名
int age; //年龄
String department //系别
public Student(int id,String name,int age,String department){
this.id = id;
this.name = name;
this.age = age;
this.department = department;
}
}
2. 构造对象的输入/输出流
要串行化一个对象,必须与一定的对象输入/输出流联系起来,通过对象输出流将对象状态保存下来,再通过对象输入流将对象状态恢复。
java.io包中,提供了ObjectInputStream和ObjectOutputStream将数据流功能
Student stu=new Student(981036,"Liu Ming",18, "CSD");
FileOutputStream fo=new FileOutputStream("data.ser");
//保存对象的状态
ObjectOutputStream so=new ObjectOutputStream(fo);
try{
so.writeObject(stu);
so.close();
}catch(IOException e )
{System.out.println(e);}
FileInputStream fi=new FileInputStream("data.ser");
ObjectInputStream si=new ObjectInputStream(fi);
//恢复对象的状态
try{
stu=(Student)si.readObject();
si.close();
}catch(IOException e )
{System.out.println(e);}
在这个例子中,我们首先定义一个类Student,实现了 Serializable接口,然后通过对象输出流的writeObject()方法将Student对象保存到文件data.ser中。之后,通过对象输入流的readObject()方法从文件data.ser中读出保存下来的Student对象。
三、串行化的注意事项
1.串行化能保存的元素
只能保存对象的非静态成员变量,不能保存任何的成员方法和静态的成员变量,而且串行化保存的只是变量的值,对于变量的任何修饰符,都不能保存。
2.transient关键字
对于某些类型的对象,其状态是瞬时的,这样的对象是无法保存其状态的,例如一个Thread对象,或一个FileInputStream对象,对于这些字段,我们必须用transient关键字标明
3. 定制串行化
缺省的串行化机制,对象串行化首先写入类
例如可在4.8.2的例子中,加入重写的writeObject()和readObject()方法,对Student 类定制其串行化。
private void writeObject(ObjectOutputStream out)throws IOException
{
out.writeInt(id);
out.writeInt(age);
out.writeUTF(name);
out.writeUTF(department);
}
private void readObject(ObjectInputStream in)throws IOException
{
id=in.readInt();
age=in.readInt();
name=in.readUTF();
department=in.readUTF();
}
- java中对象的串行化(Serialization)
- Java中对象的串行化(Serialization)
- java 对象的串行化(Serialization)
- Java对象的串行化(Serialization)
- java串行化——Java中对象的串行化(Serialization)和transient关键字
- 对象的串行化(Serialization)
- 对象的串行化(Serialization)
- Java 对象的串行化(Serialization)浅谈
- Java中对象的串行化(Serialization)和transient关键字
- Java中对象的串行化(Serialization)和transient关键字
- Java中对象的串行化(Serialization)和transient关键字
- Java中对象的串行化(Serialization)和transient关键字
- Java中对象的串行化(Serialization)和transient关键字
- Java中对象的串行化(Serialization)和transient关键字
- Java中对象的串行化(Serialization)和transient关键字
- Java中对象的串行化(Serialization)和transient关键字
- Java中对象的串行化(Serialization)和transient关键字
- 对象的串行化(Serialization)
- 试验网站#3搜索引擎优化收录情况记录2007-8-22
- 五个囚犯 一道真正难倒亿人的智力题,这是微软的面试题。
- Workday - 不再复杂的ERP
- 逝与生
- java中对象次第读写(Serialization)
- java中对象的串行化(Serialization)
- Buffalo WHR-HP-G54 相关信息
- dd-wrt 设置
- VC++从入门到精通开发详解视频教程
- 写得不错的linux学习笔记
- 谈谈J2SE中的序列化
- 字符集编码详细研究
- 404 Error Pages: Reloaded(404错误页面:非常棒的)
- 学习的地方……