小弟想实现如下功能:
    有如下一个类,我在创建了这个类的对象之后,想把它直接传递给另外一个对象中调用。如果这个被传递的对象中都是基本数据类型的话,如
public class Person {    String name;
    String surname;
    Date birthdate;
    int age;    public Person(String n, String s, Date d, int a) {
        name = n;
        surname = s;
        birthdate = d;
        age = a;
    }    public String toString() {
        return (name + " " + surname + " born on " + birthdate.toString() + " age = " + age);
    }
}实现这个功能不难,直接在Person类定义中加上implements Serializable 就可以了。但问题是:现在如果想实现以下对象的序列化,就不行了。
我想着原因可能是因为这个类里面包含Vector型的dataPoints,而dataPoints又是由多个Person型的对象所组成的Vector容器。这样如何序列化???????public class DataService {
    private Vector dataPoints; //Vector变量保存数据集
    public DataService() { //从DataSet对象中得到数据集,保存在Vector变量中 并返回
        DataSet dt = new DataSet();
        this.dataPoints = dt.getDataPoints();    }   public Vector getDataPoints() {
        return dataPoints;
    }
}

解决方案 »

  1.   

    Vector是实现了Serializable接口的你的DataService也要实现Serializable接口public class DataService implements Serializable
      

  2.   

    多谢大家的帮助。
    healer_kx兄说的我好像有些点明白,能够说的更为具体呢,能写出简单的代码更好。
      
    至于interpb兄说的,我也是这么认为的试过了,没有运行成功,我也不清楚问题出在哪?
      

  3.   

    Vector 型的dataPoints中保存了dataPoint型的对象,构造方法中调用了 DataSet ,是不是在这两个类中的定义上都加上implements Serializable就行了呢
      

  4.   

    涉及到的阿类都要加上Srizlizable 接口
      

  5.   

    算了,没有时间了。不一定非要实现该接口的,可以参考这个帖子。
    http://www.newasp.net/tech/java/6018.html
      

  6.   

    Java实例技术手册,对象串行化一章,第一个例子就是
      

  7.   

    感谢大家,我的程序已经运行成功了。
    正向interpb和healer_kx兄所说的那样,将里面的成员,以及成员的成员都序列化就行了。
      

  8.   

    对象序列话的时候会递归保存对象引用的每个对象数据.即要求对象引用的对象也序列化
    根据LZ代码改了下,你看看
    package JAVAEye;import java.io.*;
    import java.util.*;
    class DataSet implements Serializable
    {
      public Vector getDataPoints()
      {
        Vector temp=new Vector();
        temp.add("da");
        return temp;
      }
    }
     class DataService implements Serializable{
        private Vector dataPoints; //Vector变量保存数据集
        public DataService() { //从DataSet对象中得到数据集,保存在Vector变量中 并返回
           DataSet dt = new DataSet();
            this.dataPoints = dt.getDataPoints();    }
       public Vector getDataPoints() {
            return dataPoints;
        }
    }
    class Person implements Serializable{
      String name;
      String surname;
      Date birthdate;
      int age;
      public Person(String n, String s, Date d, int a) {
        name = n;
        surname = s;
        birthdate = d;
        age = a;
      }
      public String toString() {
        return (name + " " + surname + " born on " + birthdate.toString() +
                " age = " + age);
      }
    }class Test
        implements Serializable {
      public static void main(String[] args) {
    //存
        FileOutputStream fileStream = null;
        try {
      Date date=new Date();
     // Person test=new Person("LXX","das",date,8);
      DataService test=new DataService();
      fileStream = new FileOutputStream("c:/Person.obj");
      ObjectOutputStream out = new ObjectOutputStream(fileStream);
      out.writeObject(test);
      out.close();
        }
        catch (Exception ex) {
          System.out.println("ex=" + ex);
        }
        try {
    //取
    //      FileInputStream fileStream1 = new FileInputStream("c:/Person.obj");
    //      ObjectInputStream in = new ObjectInputStream(fileStream1);
    //      Person test1 = (Person) in.readObject();
    //      System.out.println("test1.toString()=" + test1.toString());
    //      in.close();
        }
        catch (Exception ex) {
          System.out.println("ex=" + ex);
        }
      }
    }