我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:2019全年资料大全正版 > 反序列化 >

java问题 如图集合序列化的报错要怎么改呢?写入文件和读取对象

归档日期:07-30       文本归类:反序列化      文章编辑:爱尚语录

  首先看一下什么是序列化:序列化的定义是一种将对象以一连串的字节描述的过程,在java中万事万物皆对象,在分布式环境中经常需要将对象从一段网络传到另一端网络。

  来想下如果不使用序列化来传输对象会怎么样,结果自然是会报错。运行时报错:java.io.NotSerializableException,原因就是没有实现序列化接口。可是为什么要序列化呢,不能像在内存一样把对象作为参数传递呢?我再百度贴吧尚学堂吧看到一个解释感觉很有道理,引用过来:

  这里首先要确定一件事,内存中将对象作为参数传递其实只是传递对象的引用(指针)。就像是继承一样,并非是将父类对象保存在子类对象之中,而是子类对象包含了父类对象的引用,在java内部继承是通过隐式的组合实现的。子类对象中会保存一个实例对象的引用super,引用指向父类。实际的方法调用中,java会优先在当前类对象中寻找名称相同的方法,如果没有,会根据super引用到父类对象中去寻找,所以,如果父类方法在子类中得到了重写,java会调用子类的方法,而不会调用被重写的父类的方法,这也是多态的实现机制。

  所以,内存中传来传去的都是地址,如果直接将其存库,然后内存经过变化,取出来的引用肯定是变了,而java的优势是跨平台,在分布式的环境中,传递对象是非常普遍的,既然涉及到了传输,势必有相应的协议,序列化就是为了解决这个问题而出来的。 完。

  现在几乎所有的应用程序都涉及网络I/O和磁盘I/O,而数据传输时都是以字节为单位的,所以所有的数据都必须能够序列化为字节。在Java中数据要被序列化为字节流,存储在文件中或在网络上传输,必须继承Serializable接口。

  序列化的用处:永久性保存对象,保存对象的字节序列到本地文件或者数据库中、通过序列化以字节流的形式使对象在网络中进行传递和接收、通过序列化在进程之前传递对象。

  然后看一下Serializable接口的声明:public interface Serializable {},由此可见序列化接口没有方法或者是字段,所以更像是一个标志,标识可序列化。

本文链接:http://buggystordera.com/fanxuliehua/855.html