谁讲 java.io.Serializable 这个接口,是什么是糊的序列化 我搞不明白
实现 java.io.Serializable 接口的类是可序列化的。没有实现此接口的类将不能使它们的任一状态被序列化或逆序列化。序列化类的所有子类本身都是可序列化的。这个序列化接口没有任何方法和域,仅用于标识序列化的语意。 允许非序列化类的子类型序列化,子类型可以假定负责保存和恢复父类型的公有的、保护的和(如果可访问)包的域的状态。只要该类(扩展)有一个无参构造子,可初始化它的状态,那么子类型就可承担上述职责。在这种情况下申明一个可序列化的类是一个错误。此错误将在运行时被检测。
实现 java.io.Serializable 接口的类是可序列化的。没有实现此接口的类将不能使它们的任一状态被序列化或逆序列化。序列化类的所有子类本身都是可序列化的。这个序列化接口没有任何方法和域,仅用于标识序列化的语意。 允许非序列化类的子类型序列化,子类型可以假定负责保存和恢复父类型的公有的、保护的和(如果可访问)包的域的状态。只要该类(扩展)有一个无参构造子,可初始化它的状态,那么子类型就可承担上述职责。在这种情况下申明一个可序列化的类是一个错误。此错误将在运行时被检测。
至于从什么地方读出来和保存到哪里去都被隐藏在函数参数的背后了。
这样子,任何类型只要实现了Serializable接口,就可以被保存到文件中,或者作为数据流通过网络发送到别的地方。也可以用管道来传输到系统的其他程序中。
这样子极大的简化了类的设计。只要设计一个保存一个读取功能就能解决上面说得所有问题。
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(); } }}