序列化与反序列化及为何要实现Serializable接口

来源:互联网 发布:手机app赚钱软件 编辑:程序博客网 时间:2024/06/05 00:56

好记性不如赖笔头……

为何要实现Serializable接口:Serializable接口是启用其序列化功能的接口。实现java.io.Serializable 接口的类是可序列化的。没有实现此接口的类将不能使它们的任一状态被序列化或逆序列化。

序列化:将class文件及内容通过流写入到文件中(也称为持久化),
反序列化:读取文件内容转为指定的class类并填充其读取到的内容

--------------------------------------------------------------------------实体类--------------------------------------------------------------------------package com.Ckinghan.objectStream;import java.io.Serializable;public class Persion implements Serializable{    /**     * 序列化ID     */    private static final long serialVersionUID = 4914051092502785039L;    private String name;    private Integer age;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }    public void name() {    }    @Override    public String toString() {        return "Persion [name=" + name + ", age=" + age + "]";    }}--------------------------------------------------------------------------序列化与反序列化--------------------------------------------------------------------------package com.Ckinghan.objectStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;public class ObjectStreamDemo {    public static void main(String[] args) {        /**         * 序列化(持久化,也就是保存class及数据到文件)对象          */        objectOutputStream();        /**         * 反序列化文件(读取文件转换为class类并填充数据)         */        objectInputStream();    }    /**     * @描述:反序列化文件(读取文件转换为class类并填充数据)     * @创建时间:     */    public static void objectInputStream(){        //创建流        ObjectInputStream objectInputStream = null;        try {            //实例化对象            objectInputStream = new ObjectInputStream(new FileInputStream("persion.txt"));            /**             * 反序列化,读取文件数据将其转换为指定的class类并填充数据             */            Persion persion = (Persion)objectInputStream.readObject();            //输出            System.out.println(persion);        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }catch (ClassNotFoundException e) {            e.printStackTrace();        } finally {            //关闭流            if(objectInputStream != null){                try {                    objectInputStream.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }    }    /**     * @描述:序列化(持久化)对象      * @创建时间:     */    public static void objectOutputStream(){        //创建对象        ObjectOutputStream objectOutputStream = null;        try {            //实例化对象            objectOutputStream = new ObjectOutputStream(new FileOutputStream("persion.txt"));            //创建实体类并填充数据            Persion persion = new Persion();            persion.setAge(20);            persion.setName("小明");            //序列化开始            objectOutputStream.writeObject(persion);            //提示            System.out.println("序列化Persion成功");        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        } finally {            //关闭流            if(objectOutputStream != null){                try {                    objectOutputStream.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }    }}*******************执行结果:序列化Persion成功Persion [name=小明, age=20]
原创粉丝点击