简单认识--序列化java.io.Serializable

[b]简单来说,就是像Hibernate那样,直接可以以对象的形式读和写到一个文件上进行保存对象,主要通过writeObject,readObject两个方法。[/b]

通过 一个简单的例子来认识 Serializable

package tt;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

class ObjectYouWannaSave implements Serializable
{
private static final long serialVersionUID = 3224332633725166982L;
//所有实现Serializable接口的类都需要增加 serialVersionUID
int x;
int y;
SubObject so = new SubObject();
}

class SubObject implements Serializable
{
private static final long serialVersionUID = 4224332633725166867L;
String s = "abc"; //String is OK, because String is java.io.Serializable
}

class Save
{ // in Save.java
public void main(String[] args)
{
ObjectYouWannaSave original = new ObjectYouWannaSave();
original.x = -1;
original.y = 100;
ObjectOutputStream out = null;
try
{
out = new ObjectOutputStream(new FileOutputStream(new File("c:/save.dat")));
out.writeObject(original); //将 对象写入持久
}
catch(Exception e)
{
System.out.println("将实例写入文件出错:"+e.toString());
}
finally
{
try{out.close();}catch(Exception e){}
}
}
}
class Read
{ // in Read.java
public void main(String[] args)
{
ObjectInputStream in = null;
try{
in = new ObjectInputStream(new FileInputStream(new File("c:/save.dat")));
ObjectYouWannaSave o = (ObjectYouWannaSave)in.readObject();
System.out.println("x="+o.x);
System.out.println("y="+o.y);
System.out.println("subobject.string=" + o.so.s);
}catch(Exception e){
}finally{
try{in.close();}catch(Exception e){}
}
}
}
public class TT
{

/** *//**
* 程序入口
* 2007-01-19 19:43
*/
public static void main(String[] args) {

// Save ss = new Save();
// ss.main(args);
Read rr = new Read();
rr.main(args);// 这是个最简单的例子,先运行Save,以后什么时候运行Read都可以(只要c:\save.dat文件还存在就可以了)
}
}
/** *//**
* 对象的寿命通常随着生成该对象的程序终止而终止,有时候,可能需要将对象的状态保存下来,
* 在需要的时候再将对象恢复,我们把对象的这种记录自己状态的以便将来再生的能力,叫做对象
* 的持续性(PERSISTENCE),对象通过写出描述自己状态的数值来记录自己,这个过程叫对象
* 的串行化Serializable。串行化的主要任务是写出对象实例变量的值。如果变量是另一个对象
* 的引用,则引用的对象也要串行化,这是个递归过程。
*/

(转自)[url]http://www.cnblogs.com/eflylab/archive/2007/01/19/625050.html[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值