你向量里的Object有没有implements Serializable

解决方案 »

  1.   

    如果我将向量toString()后就可以了,不知道什么原因,请多帮忙
      

  2.   

    我这样用可以的啊
    Server:    
    Vector v = new Vector();
    v.add("a");
    v.add("b");
    v.add("c");
    objOut.writeObject(v);Client:  
    Vector v = (Vector)input.readObject();
    System.out.println(v.toString());//为[a, b, c]
      

  3.   

    Vector 肯定可以用readObject() 读回来的,因为它实现了Serializable 接口,但放在Vector 中的对象就不一定实现了Serializable 接口,因此不一定会序列化成功。不过你的例子中包含的是String 对象,是实现了Serializable 接口的,是肯定可以的。可以用下面例子测试一下:import java.io.*;
    import java.util.*;public class TestObject {
      public static void main(String[] args) {
      try {
        Vector v = new Vector();
        v.add( "a" );
        v.add( "b" );
        v.add( "c" );
        v.add( "e" );
        v.add( "f" );
        v.add( "g" );
        System.out.println(v.toString());
        ObjectOutputStream os = new ObjectOutputStream( new FileOutputStream("v.ser", true));
        os.writeObject(v);
        ObjectInputStream is = new ObjectInputStream( new FileInputStream("v.ser"));
        Vector v1 = (Vector) is.readObject();
        System.out.println(v1.toString());
      } catch(Exception e) {
        e.printStackTrace();
      }
      }
    }检查一下你想用writeObject() 的对象是否声明实现了Serializable 接口。
      

  4.   

    可以写的,我怀疑你读出时没有类型转换
    import java.io.*;
    import java.util.*;public class WriteTest {
      public static void main(String[] args)  {
          Vector v = new Vector();
          v.add("a");
          v.add("b");
          v.add("c");
        try{
            FileOutputStream ostream = new FileOutputStream("t.tmp");
            ObjectOutputStream p = new ObjectOutputStream(ostream);
            p.writeObject(v);
                  p.flush();
            ostream.close();
        }catch(Exception e){
            e.printStackTrace();
        }
        }
    }
    读方法如下
    import java.io.*;
    import java.util.*;public class Test {
      public static void main(String[] args)  {
          try{
        FileInputStream istream = new FileInputStream("t.tmp");
        ObjectInputStream p = new ObjectInputStream(istream);    Vector v = (Vector)p.readObject();    
        System.out.println(v);    
        istream.close();
          }catch(Exception e){
        e.printStackTrace();
          }
      }
    }   
      

  5.   

    各位呀,我测试了这么久,还是不行,我将你们的程序放在应用里面都可以用
    但一道我的web里面就不行了,这是为什么呀,代码如下:
    applet:
      void jButton1_actionPerformed(ActionEvent e) {
        try{
          URL url=new URL(getDocumentBase(),"/servlet/pack.Servlet_test");
          URLConnection con=url.openConnection();
          con.setUseCaches(true);
          con.setDoOutput(true);
          con.setDoInput(true);
          ByteArrayOutputStream byteout=new ByteArrayOutputStream();
          DataOutputStream out=new DataOutputStream(byteout);
          out.writeUTF(this.jTextField1.getText());
          out.flush();
          byte buf[]=byteout.toByteArray();
          con.setRequestProperty("Content-type","application/octest-stream");
          con.setRequestProperty("Content-length",""+buf.length);
          DataOutputStream dataout=new DataOutputStream(con.getOutputStream());
          dataout.write(buf);
          dataout.flush();
          dataout.close();
          ObjectInputStream in=new ObjectInputStream(con.getInputStream());
          Vector v=(Vector)in.readObject();
          String str=v.toString();
    //      String str=in.readObject().toString();
          this.jTextArea1.setText(str);
          in.close();
        }catch(Exception ee){
          System.out.println("applet:"+ee.getMessage());
        }
      }servlet:
      public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType(CONTENT_TYPE);
        try{
          DataInputStream in=new DataInputStream(request.getInputStream());
          String response_str=in.readUTF();
          System.out.println(response_str);      
          response.setContentType("application/octest-stream");
                ObjectOutputStream servletout=new ObjectOutputStream(response.getOutputStream());
          System.out.println(v.toString());
          servletout.writeObject(v);
          servletout.flush();
          servletout.close();
        }catch(Exception e){
          System.out.println("servlet:"+e.getMessage());
        }
      }  /**Process the HTTP Post request*/
      public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request,response);
      }