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

2014-11-17 06:30:01 阅读( 30 )

2588人 收藏本页

标签:Java面试题

对象的序列化指的是将对象以字节流的形式纪念性传输,即将对象转化(分解)为顺序字节流后应用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);

    }

}

来自IT公司面试手册

下一篇:列举一下常用的Java API

上一篇:介绍一下Java的隐藏,覆盖和重载

亲~ 如果您有更好的答案 可在评论区发表您独到的见解。

您想查看更多的信息: 面试题