栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

笔记 第1章 流与文件(7) 对象流序列化

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

笔记 第1章 流与文件(7) 对象流序列化

 1.5 对象流与序列化

虽说可用固定长度解决对象保存,但是仍然存在类似继承、多态的参数不固定的情况。可用对象流来解决。对象流的对象必须实现Serializable接口:

写入:使用 ObjectOutputStream 的 writeObject

读取:使用 ObjectInputStream 的 的 readObject

作者示例操作:

写入过程:

 每个对象引用关联一个序列号

 第一次遇到的对象,保存

 已保存对象输出

读取过程:

 第一次遇到对象时构建

 重复遇到时关联

❤李癩❤李癩❤李癩

import editor.cn.com.oom.Employee;
import java.io.*;
 
public class Main{
    public static void main(String[] args) throws InterruptedException, IOException, ClassNotFoundException {
        Employee[] staff = new Employee[3];
        staff[0] = new Employee("Carl Cracker", 75000,1987, 12, 15);
        staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
        staff[2] = new Employee("Tony Tester", 40000, 1990, 3, 15);
 
        try(ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("employee.dat"))){
            out.writeObject(staff);
        }
 
        try(ObjectInputStream in = new ObjectInputStream(new FileInputStream("employee.dat"))){
            Employee[] newStaff = (Employee[]) in.readObject();
 
            newStaff[1].raiseSalary(10);
 
            for(Employee e:newStaff){
                System.out.println(e);
            }
        }
    }
}

❤李癩❤李癩❤李癩

运行结果:

尿寮

尿寮

小贴士:

上述例子请务必让 Employee 实现 Serializable 和定义版本号!

 1.5.1 理解对象序列化的文件格式

个人建议:这节作者的目的纯粹秀技术,讲的不清晰。真想学习请看《深入理解Java虚拟机》,看完之后再看原书这部分比较合适,那个里面内容比较全面。

最后几句还挺有用的:

 对象流输出中包含所有对象的类型和数据域

 每个对象都被赋予一个序列号

 相同对象的重复出现将被存储为对这个对象的序列号引用

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/888158.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号