博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java序列化
阅读量:7224 次
发布时间:2019-06-29

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

概念

序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。 

序列化分为两大部分:序列化和反序列化。

序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。

反序列化就是打开字节流并重构对象。

特点

如果某个类能够被序列化,其子类也可以被序列化。

声明为static和transient类型的成员数据不能被序列化。因为static代表类的状态, transient代表对象的临时数据。

 

相关的类和接口

在java.io包中提供的涉及对象的串行化的类与接口有:

   ObjectOutput接口、ObjectOutputStream类、ObjectInput接口、ObjectInputStream类。

  • ObjectOutput接口:它继承DataOutput接口并且支持对象的串行化,其内的writeObject()方法实现存储一个对象。
  • ObjectInput接口:它继承DataInput接口并且支持对象的串行化,其内的readObject()方法实现读取一个对象。
  • ObjectOutputStream类:它继承OutputStream类并且实现ObjectOutput接口。利用该类来实现将对象存储(调用ObjectOutput接口中的writeObject()方法)。
  • ObjectInputStream类:它继承InputStream类并且实现ObjectInput接口。利用该类来实现读取一个对象(调用ObjectInput接口中的readObject()方法)。

 

上代码来一探究竟

import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;import java.util.Date;public class ObjectSerialize {    public static void main(String[] args) throws Exception {        String filePath = "D:\\objectFile.txt";                ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(                filePath));        // 序列化对象        Person person = new Person("幻影", 25);        out.writeObject("你好!");        out.writeObject(new Date());        out.writeObject(person);//自定义对象类型        out.writeInt(123); // 写入基本类型数据        out.close();                        // 反序列化对象        ObjectInputStream in = new ObjectInputStream(new FileInputStream(                filePath));        System.out.println("obj1=" + (String) in.readObject());        System.out.println("obj2=" + (Date) in.readObject());        Person obj3 = (Person) in.readObject();        System.out.println("obj3=" + obj3);        int obj4 = in.readInt();        System.out.println("obj4=" + obj4);        in.close();    }}class Person implements Serializable {    private static final long serialVersionUID = 1L;    private String name;    private int age;    public Person(String name, int age) {        this.name = name;        this.age = age;    }    public String toString() {        return "name=" + name + ", age=" + age;    }}

 

更多资料:

 

转载于:https://www.cnblogs.com/yejg1212/archive/2013/04/09/3011263.html

你可能感兴趣的文章
获取包下的类名
查看>>
Fluent UDF【7】:解释型UDF
查看>>
cocos2dX 之数据存储
查看>>
Android应用程序安装过程浅析
查看>>
浅谈浏览器兼容解决方案
查看>>
react-native 项目实战 -- 新闻客户端(1) -- 初始化项目结构
查看>>
ToggleButton开关状态按钮控件
查看>>
kafka单机模式部署安装,zookeeper启动
查看>>
CentOS增加用户到sudo用户组
查看>>
C++ delete operator做了什么事
查看>>
partproble在RHEL 6下无法更新分区信息
查看>>
linux服务之nfs
查看>>
linux ps命令,查看某进程cpu和内存占用率情况, linux ps命令,查看进程cpu和内存占用率排序。 不指定...
查看>>
iHover – 30+ 纯 CSS 实现的超炫的图片悬停特效
查看>>
Android MediaPlayer 和 NativePlayer 播放格式控制
查看>>
总结一下工作中用到的Mybatis业务逻辑
查看>>
Android图表日历控件组件
查看>>
Linux下的网络环境配置
查看>>
mysql---总体备份和增量备份
查看>>
裸机代码(uboot) : clear bss
查看>>