介绍一下java中对象的序列化

匿名网友 匿名网友 发布于: 2015-08-30 00:00:00
阅读 147 收藏 0 点赞 0 评论 0

对象的序列化指的是将对象以字节流的形式纪念性传输,即将对象转化(分解)为顺序字节流后应用java.io包中操作字节流的类实现在各种介质中的数据传输,对象的序列化被广泛地应用与网络分布式的远程调用RMI系统中。

当一个类实现了java.io包中的Serializable接口,则通过该类创建的对象被称之为可序列化对象。

一个对象可序列化的要求是创建该对象的类要实现Serializable接口。

示例

import java.io.*;

import java.util.*;

//关于Serializable接口见:http://java.sun.com/javase/6/docs/api/java/io/Serializable.html

public class SerializeDemo implements Serializable {

    Date date=new Date();

    String strUser;

    //transient String strPass;//非序序列化的部分

    String strPass;//可以设定为序列化的部分

    public SerializeDemo(String name,String pwd){

       strUser=name;

       strPass=pwd;

    }

    public String toString(){  //重写了根类Object的方法toString()

       String pwd=(strPass==null) ? “未知”:strPass;

       return “登录信息:n”+”用户名:”+  strUser+”n日期:”+date.toLocaleString()+”n密码:”+pwd;

    }

    public static void main(String[] args)

    throws IOException,ClassNotFoundException{

       SerializeDemo sd=new SerializeDemo(“liuzc”,”liuzc518″);//新建对象,调用构造函数

       System.out.println(sd);

       //下面是新建一个对象输出流

       ObjectOutputStream oosLogin=new ObjectOutputStream(new FileOutputStream(“user.data”));

       oosLogin.writeObject(sd);

       oosLogin.close();

       long lngTime=System.currentTimeMillis()+2000;

       while(System.currentTimeMillis()<lngTime);

       ObjectInputStream oisLogin=new ObjectInputStream(new FileInputStream(“user.data”));

       System.out.println(“重新读入登录信息……n”+(new Date()).toLocaleString());

       sd=(SerializeDemo)oisLogin.readObject();

       System.out.println(sd);

    }

}

评论列表
文章目录