谁讲 java.io.Serializable 这个接口,是什么是类的序列化 我搞不明白
谁讲 java.io.Serializable 这个接口,是什么是糊的序列化 我搞不明白
实现 java.io.Serializable 接口的类是可序列化的。没有实现此接口的类将不能使它们的任一状态被序列化或逆序列化。序列化类的所有子类本身都是可序列化的。这个序列化接口没有任何方法和域,仅用于标识序列化的语意。
允许非序列化类的子类型序列化,子类型可以假定负责保存和恢复父类型的公有的、保护的和(如果可访问)包的域的状态。只要该类(扩展)有一个无参构造子,可初始化它的状态,那么子类型就可承担上述职责。在这种情况下申明一个可序列化的类是一个错误。此错误将在运行时被检测。
问题点数:50、回复次数:12Top
1 楼treeroot(旗鲁特)回复于 2005-06-02 12:45:09 得分 10
就是可以把对象存到字节流,然后可以恢复!Top
2 楼sjjday(小猫)回复于 2005-06-02 12:53:14 得分 0
那们高手,能不能列一个简单一的例子 讲一下,
知道概念 我还是不会用,Top
3 楼xinghe2004()回复于 2005-06-02 13:49:58 得分 0
我也遇到类似疑惑
帮你顶一下
一起学习!Top
4 楼sjjday(小猫)回复于 2005-06-03 10:47:37 得分 0
那们高手,能不能列一个简单一的例子 讲一下,
知道概念 我还是不会用,Top
5 楼fog628(无名)回复于 2005-06-03 11:23:36 得分 10
Integer实现了Serializable,
所以可以把一个Integer的对象用IO写到文件里,
之后再可以从文件里读出,如你开始写入的时候
那个对象的intValue() 是5的话,那读出来之后也是5Top
6 楼sjjday(小猫)回复于 2005-06-03 20:08:34 得分 0
那么用序化类的作用。是用来传送类的对象。Top
7 楼yangbc(土豆块)回复于 2005-06-03 20:40:47 得分 10
序列化的是具体的实例,类序列化了有什么用,序列化一个抽象的概念是没有意义的,序列化的东西是为了便于传送供以后恢复成原状使用Top
8 楼Befiercer(Befiercer)回复于 2005-06-03 20:51:03 得分 10
网络上传的是只能是那种简单类型的数据,如果继承了这个接口,那么也可以象简单类型一样在网络上自由传了,我是这么理解的Top
9 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-06-03 21:17:30 得分 0
序列化,对于数据Top
10 楼lipeipei(lipei)回复于 2005-06-03 21:57:24 得分 10
所谓的Serializable,就是java提供的通用数据保存和读取的接口。
至于从什么地方读出来和保存到哪里去都被隐藏在函数参数的背后了。
这样子,任何类型只要实现了Serializable接口,就可以被保存到文件中,或者作为数据流通过网络发送到别的地方。也可以用管道来传输到系统的其他程序中。
这样子极大的简化了类的设计。只要设计一个保存一个读取功能就能解决上面说得所有问题。Top
11 楼sjjday(小猫)回复于 2005-06-04 01:28:10 得分 0
有一点感觉了,那位高手有时间搭把手,写一个完整简单的例子。
让我有更好的感觉 呵呵,差这一步了,这接口就理解的差不多了。呵呵Top
12 楼sjjday(小猫)回复于 2005-06-04 01:56:26 得分 0
好东东 与大家分享,
import java.io.*;
import java.util.*;
class TestVector implements java.io.Serializable{
private Vector vect=new Vector();
public void add(Object obj){
this.vect.add(obj);
}
public void print(){
System.out.println(this.vect);
}
public static void main(String[] args){
try {
/* 将对象写到一个文件里 */
FileOutputStream objfile = new FileOutputStream("testvector.obj");
/* 创建一个输出流 */
ObjectOutputStream p = new ObjectOutputStream(objfile);
/* 创建一个TestVector对象 */
TestVector tv =new TestVector();
/*给Vector写入几String个对象*/
tv.add("One");
tv.add("Two");
tv.add("Three");
p.writeObject(tv); // 把tv写入流
p.flush();
objfile.close(); // 关闭文件对象
} catch (Exception e) {
e.printStackTrace();
}
}
}Top




