第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

Java序列化技術(shù)

標簽:
Java

在实际开发中,我们会将一个对象写入到一个文件中,进行持久化. 那么这个类必须要实现一个Serializable接口,才能写入!那么java是怎么进行持久化保存对象呢?

Java序列化就是将一个对象转化成一串二进制表示的字节数组,通过保存或转移这些字节数据来达到持久化的目的。需要持久化,对象必须继承java.io.Serializable接口。反序列化则是相反的过程,将这个字节数据再重新构造成对象。我们知道反序列化时,必须有原始类作为模板,才能将这个对象还原,从这个过程我们可以猜测,序列化的数据并不像class文件那样保存类的完整的结构信息。

那么序列化的数据到底都含有哪些信息,如下面的代码所示:

import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectOutputStream;import java.io.Serializable;public class Student implements Serializable {    private static final long serialVersionUID = 1396269444885402064L;    public int num = 3190;     public static void main(String[] args) {        try {            FileOutputStream fos = new FileOutputStream("student.txt");            ObjectOutputStream oos = new ObjectOutputStream(fos);            Student s = new Student();            oos.writeObject(s);            oos.flush();            oos.close();        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }}

序列化的文件二进制字节数据如下:


解析:

ac ed: STREAM_MAGIC 声明使用了序列化协议。 00 05: STREAM_VERSION 序列化协议版本。 73: TC_OBJECT 声明这是一个新的对象。 72: TC_CLASSDESC声明这里开始一个新class。 72 00 07 53 74 75 64 65 6E 74: Student的完整类名。   13 60 8B A9 91 20 51 D0: serialVersionUID,序列化ID,如果没有 指定,则会由算法随机生成一个8字节的ID。 02: 标记号,该值声明该对象支持序列化。 00 01: 该类所包含的域的个数为1。 49:域属性,49代表“I”,也就是Int类型。 00 03:域名字的长度,为3。 6e 75 6d: num属性的名称。 78:TC_ENDBLOCKDATA,对象块结束的标志。 70:TC_NULL,说明没有其他超类的标志. 00 00 05 6e:3190的数值。

虽然Java的序列化能够保证对象状态的持久保存,但是遇到一些对象结构复杂的情况还是比较难处理的,下面是对一些复杂的对象情况的总结:

1.当父类继承Serializable接口时,所有子类都可以被序列化。

2.子类实现了Serializable接口,父类没有,父类的属性不能序列化(不报错,数据会丢失),但是在子类中的属性仍能正确序列化。

3.如果序列化的属性是对象,则这个对象也必须实现Serializable接口,否则会报错。

4.在反序列化时,如果对象的属性有修改或删除,则修改的部分属性会丢失,但不会报错。

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消