返回信息流在写Javabean的时候,总是看见它实现了一个 Serializable接口,但不知道作用
在北邮人Java板块也没找到相关信息
所以去查看了JDK1.6源码,google了几下,现在总结一下经验,希望对大家有所帮助
由于是初学,理解难免偏颇,若有错误,望请大牛斧正
小学期在做C++作业的时候,编了个类似电话本的东西,里面的每个人是一个对象。
当时就有如下疑问:
当我把对象写进文件的时候,不仅保存了对象的数据,也保存了对象的方法,显然对象方法对于电话本来说是无效信息,当时就想应该有办法能只保存数据而不保存方法的。
今天发现Java中的Serializable接口有这个功能,当然它的功能不止这个。
Serializable接口不包含任何方法定义,它只是说明了凡是实现了该接口的类的实例都可以被序列化。
先明确一下序列化和反序列化的概念,对象的序列化就是把对象(主要指数据域,绝对不包括方法域)转化为字节流。反序列化就是这个过程的逆过程。
打个比方,今晚你给心仪已久MM打电话表白(没有勇气面对面),吱呀了半天,终于说出口:“其实我已经喜欢你很久了!”。想想看,MM是怎么听见你的表白的,话筒将声音通过电磁效应转化为电流,传到MM那边时,听筒又会把电流转化为声音。话筒所做的工作就相当于序列化,而听筒做的就使反序列化。
那么为什么要序列化呢?想想看,如果不用电话,从学2向学11的MM表白,她能听到吗?就算听到了声音,也不知道你说什么!对象的传递也一样,如果不经过序列化,对象的读写操作很可能引发一些问题(具体的问题不太清楚),但是序列化后,对象的信息以字节序列的形式保存,java很擅长流的操作。
最后概括一下:
1.实现了Serializable接口的类的对象可以被序列化;
2.对象数据域的数据类型和值会被序列化,而方法不会;
3.除了数据域之外,对象的类型也会被序列化,因为你要从字节流还原出对象,
必须知道该对象是什么类型。
这是一条镜像帖。来源:北邮人论坛 / java / #7067同步于 2008/11/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
关于Java序列化
luweiyang
2008/11/4镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。