黑马程序员技术交流社区

标题: 如何实现java序列化 [打印本页]

作者: 刘晓康    时间: 2012-4-5 21:23
标题: 如何实现java序列化
如何实现java序列化
作者: 李节起    时间: 2012-4-5 23:25
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。


序列化的实现:将需要被序列化的类实现Serializable接口,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。
作者: yangshang1    时间: 2012-4-6 06:23
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;
}
作者: 曹魁    时间: 2012-4-6 08:14
我们有的时候需要将将一个java 对象变成字节流的形式传出去或者从一个字节流中恢复成一个
java 对象,例如,要将java 对象存储到硬盘或者传送给网络上的其他计算机,这个过程
我们可以自己写代码去把一个java 对象变成某个格式的字节流再传输,但是,jre 本身
就提供了这种支持,我们可以调用OutputStream的writeObject方法来做,如果要让java
帮我们做,要被传输的对象必须实现serializable 接口,这样,javac 编译时就会进行特
殊处理,编译的类才可以被writeObject方法操作,这就是所谓的序列化
需要被序列化的类必须实现Serializable 接口,该接口是一个mini 接口,其中没有需要实现的方法,
implements Serializable只是为了标注该对象是可被序列化的。
例如,在web 开发中,如果对象被保存在了Session 中,tomcat 在重启时要把Session
对象序列化到硬盘,这个对象就必须实现Serializable接口。如果对象要经过分布式系统
进行网络传输或通过rmi 等远程调用,这就需要在网络上传输对象,被传输的对象就必
须实现Serializable接口。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2