A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘晓康 中级黑马   /  2012-4-5 21:23  /  1548 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如何实现java序列化

3 个回复

倒序浏览
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。


序列化的实现:将需要被序列化的类实现Serializable接口,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。
回复 使用道具 举报
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;


public class TestSerilizible {

        /**
         * @param args
         */
        public static void main(String[] args) throws Exception{
                // TODO Auto-generated method stub
                FileOutputStream fos = new FileOutputStream("abc.txt");

       ObjectOutputStream oos=new ObjectOutputStream(fos);
       Person p=new Person();
       p.setName("asd");
       oos.writeObject(p);
       oos.flush();
       FileInputStream fis=new FileInputStream("abc.txt");
       ObjectInputStream ois=new ObjectInputStream(fis);
       Person p1=(Person)ois.readObject();
       System.out.println(p1.getName());
       ois.close();
       oos.close();
        }

}
class Person implements Serializable
{
        private String name;
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public String getPwd() {
                return pwd;
        }
        public void setPwd(String pwd) {
                this.pwd = pwd;
        }
        private String pwd;
}
回复 使用道具 举报
我们有的时候需要将将一个java 对象变成字节流的形式传出去或者从一个字节流中恢复成一个
java 对象,例如,要将java 对象存储到硬盘或者传送给网络上的其他计算机,这个过程
我们可以自己写代码去把一个java 对象变成某个格式的字节流再传输,但是,jre 本身
就提供了这种支持,我们可以调用OutputStream的writeObject方法来做,如果要让java
帮我们做,要被传输的对象必须实现serializable 接口,这样,javac 编译时就会进行特
殊处理,编译的类才可以被writeObject方法操作,这就是所谓的序列化
需要被序列化的类必须实现Serializable 接口,该接口是一个mini 接口,其中没有需要实现的方法,
implements Serializable只是为了标注该对象是可被序列化的。
例如,在web 开发中,如果对象被保存在了Session 中,tomcat 在重启时要把Session
对象序列化到硬盘,这个对象就必须实现Serializable接口。如果对象要经过分布式系统
进行网络传输或通过rmi 等远程调用,这就需要在网络上传输对象,被传输的对象就必
须实现Serializable接口。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马