问下,io里的对象串行化Serializable是什么意思?
可不可以举个形象的例子,TIJ里的例子看不懂 问题点数:20、回复次数:11Top
1 楼superman421(38度的雪)回复于 2006-03-04 09:20:08 得分 0
串行化就是把一个对象变成字节留用于网络传输。
简单点说就是会按某种规则分解一个对象知道它的每个属性为基本属性位置为止。然后可以用这个字符串恢复成一个相同的对象。
但是不是所有的对象都是可以序列化的。Top
2 楼superman421(38度的雪)回复于 2006-03-04 09:22:20 得分 0
Serializable这个接口不会做什么实质的事,只是标注这个对象是可以序列化的。系统会自动解析对象的。期间好象用到了反射机制,至少在你覆盖了写出和读入对象数据时是这样的。Top
3 楼sxy0713(沈骏)回复于 2006-03-04 10:49:11 得分 0
好比时空传输机(假如有的话).比如要把你传输到我这里来,当然你要先通过机器先把你"分解"成传输流,到我这里然后又"组装"回原来的你.你也可以选择先不到我这里,而是先待在哪个磁盘或者服务器里面,如果有哪个人叫你,马上可以把你叫到他那里去"组装"还原.呵呵~~够形象了?Top
4 楼horseyet(horseyet)回复于 2006-03-04 10:59:04 得分 0
那可不可以理解为传输之前先编码,之后解码呢?Top
5 楼treeroot(旗鲁特)回复于 2006-03-04 11:04:22 得分 0
upTop
6 楼zx2002027(http://www.netyi.net/in.asp?id=zx2002027)回复于 2006-03-04 11:25:01 得分 0
都讲完了Top
7 楼sxy0713(沈骏)回复于 2006-03-04 11:28:47 得分 0
编码和解码也可以这么理解,但是这是属于更底层的东西.Java提供的I/O流的种类非常多,都有自己适用范围.至于这些I/O流是如何实现的,你也可以去深究~Top
8 楼xiangzhengyan(千里单骑走西藏)回复于 2006-03-04 11:42:02 得分 0
可以把整个对象串行化后存入磁盘或在网络上传输
-------------------------
import java.io.*;
class Obj implements Serializable
{
int i;
}
public class Test {
public static void main(String []args) throws IOException
{
Obj obj = new Obj();
obj.i=1;
BufferedOutputStream buffout = new BufferedOutputStream(new FileOutputStream("c:/test.txt"));
ObjectOutputStream objout = new ObjectOutputStream(buffout);
objout.writeObject(obj);//写入
objout.close();
}
}
//也可用同样方法把文件中内容读入类中
Top
9 楼superman421(38度的雪)回复于 2006-03-04 13:00:21 得分 0
确实我开始说错了,序列化之后的数据是可以通过任何形式保存和传播的。
说它是编码和解码也行,有那么点意思。(不过没有深入研究所编码和解码的定义,不知合适不)。
作为一个高效率的传播和保存方法还可以对序列化之后的数据进行压缩和进一步编码!
Top
10 楼jordan1(班君)回复于 2006-03-05 13:50:05 得分 0
都说完了,楼主明白了吧?Top
11 楼qingyuan18(zealot_tang)回复于 2006-03-05 19:10:09 得分 0
Serializable是个接口,实现了这个接口的类可以转化为字节流在网络中传输并在接收端还原成原来的类,实现该接口需要重写equals(Object object)和HashCode()两个方法。Top




