Java中为什么要实现序列化接口
我们在学习JavaSE的时候学习过ObjectInputStream
和ObjectOutputStream
,当时是觉得只要一个对象要写入文件就必须要实现Serializable
接口。其实这样理解完全没有问题
一、问题引入
Java中为什么要实现序列化接口呢?我们来看下图:
Java程序中要往磁盘中写入一个数据,这个数据如果是一个普通字符串,那么没有问题,所有机器都能正常识别字符串,即使需要转成对应的字节,计算机也知道怎么将字符串转成对应的字节(码表),但是如果是一个Java对象那就麻烦了,磁盘并不知道你传递的是一个Java对象,换句话说,磁盘不知道按照什么格式把Java对象转换成对应的字节
我们知道Java对象本质上是一个class字节码,磁盘并不知道怎么将这个字节码写入到磁盘中,按何种方式去写,所以需要”标识”一下,告诉磁盘:“我是个Java对象,你要按这种方式写入到磁盘中”,只不过”按这种方式写入到磁盘”。美曰:“按这种方式序列化到磁盘”,因此实现Serializable
接口只是标识一下”我是个Java对象”
如果你懂了上述文字的理解,也就不难懂下述图了
二、加深理解
Java 提供了一种对象序列化的机制。用一个字节序列可以表示一个对象,该字节序列包含该对象的数据、对象的类型和对象中存储的属性等信息。字节序列写出到文件之后,相当于文件中持久保存了一个对象的信息。
反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。对象的数据、对象的类型和对象中存储的数据信息,都可以用来在内存中创建对象。看图理解序列化:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/131854.html