博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java IO 5 : 对象序列化
阅读量:5255 次
发布时间:2019-06-14

本文共 2240 字,大约阅读时间需要 7 分钟。

对象序列化:

  对象的序列化(Serialize)指将一个java对象写入IO流中;
  对象的反序列化(Deserialize)指从IO流中恢复该Java对象;

序列化的含义和意义:

  序列化机制允许将实现序列化的java对象转换成字节序列,将这些字节序列可以保存在磁盘,或者通过网络传输,以后重新恢复成原来的对象。
  序列化使得对象可以脱离程序的运行 , 独立存在。
  所有的分布式应用常常需要跨平台,跨网络,所以要求所有传递的参数,返回值必须实现序列化。
  通常建议:程序创建的每个JavaBean类都实现Serializable

如果要让某个对象支持序列化机制,该类必须实现两个接口之一  :   Serializable  Externalizable

使用对象流实现序列化 : demo如下

package com.demo.serialize;import java.io.Serializable;public class Person implements Serializable{    private String name ;    private int age;        public Person(String name, int age) {        System.out.println("序列化成功");        this.name = name;        this.age = age;    }    /*//这是没有无参构造器的,加了无参的反序列化的时候报错    public Person() {        super();        // TODO Auto-generated constructor stub    }*/    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    @Override    public String toString() {        return "Person [name=" + name + ", age=" + age + "]";    }    }
View Code
package com.demo.serialize;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 WriteObject {    public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {                ObjectOutputStream objOut = new ObjectOutputStream(new FileOutputStream("D://object.txt"));        Person person = new Person("张三", 18);        objOut.writeObject(person);        objOut.close();        System.out.println("----------------------");        ObjectInputStream objIn = new ObjectInputStream(new FileInputStream("D://object.txt"));        Person p = (Person)objIn.readObject();        System.out.println(p.toString());        objIn.close();    }}
View Code

注意事项:  1.person类只有一个有参数的构造器,加无参构造器,反序列化报错,

          2.序列化的时候person里面是有打印一句话的,但是反序列化的时候没有打印,说明反序列化机制无须通过构造器来初始化java对象。
        3.反序列化的时候,要有对应的java类 , 不然会报calssNotFoundException异常
        4.如果使用序列化机制往一个文件中写入多个java对象,反序列化恢复的时候必选按照实际写入的顺序读取

 

转载于:https://www.cnblogs.com/Uzai/p/9647832.html

你可能感兴趣的文章
HDU 2548 A strange lift
查看>>
Linux服务器在外地,如何用eclipse连接hdfs
查看>>
react双组件传值和传参
查看>>
[Kaggle] Sentiment Analysis on Movie Reviews
查看>>
价值观
查看>>
mongodb命令----批量更改文档字段名
查看>>
使用 SharedPreferences 分类: Andro...
查看>>
TLA+(待续...)
查看>>
题解: [GXOI/GZOI2019]与或和
查看>>
MacOS copy图标shell脚本
查看>>
国外常见互联网盈利创新模式
查看>>
Oracle-05
查看>>
linux grep 搜索查找
查看>>
Not enough free disk space on disk '/boot'(转载)
查看>>
android 签名
查看>>
vue项目中使用百度统计
查看>>
android:scaleType属性
查看>>
SuperEPC
查看>>
mysql-5.7 innodb 的并行任务调度详解
查看>>
shell脚本
查看>>