在Java里面,不允许将没有实现Serializable接口的对象直接保存。如果实在需要,你需要利用反射机制来自己实现写入和读出的过程,但是实际上并不一定能够恢复回来的,像ResultSet,它依赖于和数据库的连接,所以它本身是不可以
恢复的,因为我在恢复的时候可能根本没有连接到数据库当中

解决方案 »

  1.   

    这样的话就要一个字段一个字段的写入了!
    如:class Bean{ int i;int j}
    则保存可以这样:void writeData(Bean bean,PrintWriter out){out.write(bean.i+"!"+bean.j)};
    读出来时根据|划分字段
      

  2.   

    没有实现序列化接口的对象:
    自定义一个类,实现Serializable接口,把要保存的对象作为它的一个成员。重写自定义类的:
    WriteObject和ReadObject,如保存一个Rectangle:
    private void writeObject(ObjectOutputStream out) throws IOException {
          out.writeDouble(rectangle.width);
          out.writeDouble(rectangle.height);
    }
    private void readObject(ObjectInputStream in)
                     throws IOException, ClassNotFoundException {
          double width = in.readDouble();
          double height = in.readDouble();
          rectangle = new Rectangle2D.Double(0,0,width,height);
    }
      

  3.   

    写对象,比如自定类为MyObject:
    MyObject obj = new MyObject();
    obj.rectangle = new Rectangle(0,0,10,10);
    ObjectOutputStream out =  new ObjectOutputStream(
                                    new BufferedOutputStream(
                                    new FileOutputStream(outFile)));
    out.writeObject(obj);        
    out.close();
    读对象:
    ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(
                                         new FileInputStream(inFile)));
    MyObject obj = (MyObject) in.readObject();
      

  4.   

    我一般用xml的方式保存object。序列化没用过
      

  5.   

    象Rectangle等一些没有实现序列化接口的对象,才要这样把一个个的属性写进文件,读回来的时候按属性重新构造对象,注意在重写的WriteObject和ReadObject中,属性的写入和读出要按一样的顺序。
      

  6.   

    实现Serializable接口的对象可以串行化到倒流里然后保存到指定的媒体
      

  7.   

    to:happyegg(放松放松)
    能不能介绍一下用xml来保存object的方法呀,最好能有个例子
      

  8.   

    xml写入,也比较方便,记录下几个你的字段内容,一般是<class-type>Yourclass</class-type>
    <field-type>int</field-type>
    <field-value>111</--------->
      

  9.   

    String Integer 等基本数据对象已经序列化了,直接写就可以了,但是Object
    并没有被序列化,你的对象要实现Serializable接口。可以继承java.sql.ResultSet
    并实现Serializable接口
      

  10.   

    同意 yigeyigeyige(怡戈) 说的,不过自己写的Object好像需要实现Serializable接口。
      

  11.   

    to: bs221cn()
    我试了一下,
    自己建了一个类MyResult同时实现了ResultSet和Serializable接口,
    在得到ResultSet后,向我的类做强制类型转换时会发生异常。
    to:opencsdn(虚心求教)
    我只找到了向xml文件中写字符串的方法。
    Element name = doc.createElement("姓名");
    student.appendChild(name);
    Text tName = doc.createTextNode("张三");
    name.appendChild(tName);
    我只找到了类似于这样的方法。
    你能不能介绍几个能写进去对象的方法。最好能有段代码,看看!!
      

  12.   

    我也正在研究这个问题,怎样将一个同时包含图片和文字的request对象存到Sql server库里,谁能告诉我咋弄的
      

  13.   

    XMLEncoder e = new XMLEncoder(
                              new BufferedOutputStream(
                                  new FileOutputStream("Test.xml")));
           e.writeObject(new JButton("Hello, world"));
           e.close();
     --------------------------------
           XMLDecoder d = new XMLDecoder(
                              new BufferedInputStream(
                                  new FileInputStream("Test.xml")));
           Object result = d.readObject();
           d.close();
     
    --------------------------------java.beans 
    Class XMLDecoder
    java.lang.Object
      java.beans.XMLDecoder
    --------------------------------java.beans 
    Class XMLEncoder
    java.lang.Object
      java.beans.Encoder
          java.beans.XMLEncoder
      

  14.   

    这个问题值得研究.实现Resultset串行化不太可能吧
      

  15.   

    我的做法是,自建一个类,实现Serializable接口.
    这类里定义一个容器,将要写入文件的类放入容器.
    再把自建类写入文件.