java编程心得(九)——序列化(Serializable)

今天解决了项目一个很重要的问题——序列化输出!现将我对Java序列化的理解与心得写下来:

一、序列化的代码:

1)首先是定义一个implements Serializable的类:

class A implements Serializable{

}

 

2)然后是序列化的代码:

//将对象a写入文件file

A a = new A();

File file = new File(“文件路径”);

try {

    OutputStream outStream = new FileOutputStream(file);

    ObjectOutputStream oos = new ObjectOutputStream(outStream);

    oos.writeObject(a);

    oos.close();

} catch (IOException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

}

 

3)再是反序列化的代码:

 

 

//从文件file读出对象a

File file = new File(“文件路径”);

A a;

try {

        InputStream inputStream = new FileInputStream(file);

     ObjectInputStream ois = new ObjectInputStream(inputStream);

     a = (A)ois.readObject();

} 

catch(FileNotFoundException e) 

{  

      System.out.println(e); 

} 

catch(IOException e) 

{  

      System.out.println(e); 

}

catch (ClassNotFoundException e)

{

      e.printStackTrace();

}

 

 

二、序列化的设计思想与要注意的问题:

其不会序列化方法函数,只会序列化实例变量。简单地说就是将保存在内存中的各种对象的状态保存到数据库、文件等系统中。要注意的问题是:

①如果该类的某个属性标识为static类型的,则该属性不能序列化;

②如果该类的某个属性采用transient关键字标识,则该属性不能序列化;

③线程相关的属性不能序列化,要设置为transient来避免序列化;

④需要访问IO、本地资源、网络资源等属性同③;

⑤任何变量需要先初始化,例如:

  public double[] d = null;

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值