同样的问题我已经问了5遍了,全部分数为200,到给你啦 你的v是vector类型的,如果你要system.out.println必须将其转换成String类型的如果你System.out.println(""+ v)也会自动调用Vector.toString()方法,一样的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String是可以序列化的,Vector是不可以序列化的,OK? 你的v是vector类型的,如果你要system.out.println必须将其转换成String类型的如果你System.out.println(""+ v)也会自动调用Vector.toString()方法,一样的 to:plato(天天) 那我该怎么办呀 to:plato(天天) 那我该怎么办呀有哪些类是可序列化的呀,200分都给你了 to:plato(天天) jdk1.3 doc中说Vector是可序列化的啊。??public class Vectorextends AbstractListimplements List, Cloneable, Serializable robbin不要误人子弟,人家说的是writeObject(),不是println(),println()是可以正常调用的to swain:你先把v.size()写进去,然后一个接一个的写v.elementAt(i)就行了 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 接口。 可以写的,我怀疑你读出是没有类型转换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(); } }} to: swain把问题描述完整嘛。把你的程序贴出来,不然怎么搞得清楚? 各位呀,我测试了这么久,还是不行,我将你们的程序放在应用里面都可以用但一道我的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); } Vector v=new Vector(); public void init() throws ServletException { v.add("a"); v.add("a"); v.add("a"); v.add("a"); } 是,写vector时请用下面的方法,这个难题曾花了本人好几天光阴,不知道,你的两百分能不能拿到/** * 发送远程方法调用请求,并返回结果。 * Creation date: (2001-4-14 16:28:16) * @return java.lang.Object 远程方法调用结果 */public Object invoke(){ System.out.println("invoke!"); ObjectInputStream in= null; //ObjectOutputStream out= null; Vector v= new Vector(); v.addElement(sJNDIName); v.addElement(sMethodName); v.addElement(cParamType); v.addElement(oParam); String sServletURL; //远程调用服务器端代理 sServletURL= com.powerise.power.util.CRMEJBClientProperties.getServletURL(); System.out.println("ServletURL:" + sServletURL); try { URL url= new URL(sServletURL); URLConnection con= url.openConnection(); con.setUseCaches(false); con.setDoOutput(true); con.setDoInput(true); ByteArrayOutputStream byteout= new ByteArrayOutputStream(); ObjectOutputStream out= new ObjectOutputStream(byteout); out.writeObject(v); out.flush(); byte buf[]= byteout.toByteArray(); con.setRequestProperty("Content-type", "application/octet-stream"); con.setRequestProperty("Content-length", "" + buf.length); DataOutputStream dataOut= new DataOutputStream(con.getOutputStream()); dataOut.write(buf); dataOut.flush(); dataOut.close(); in= new ObjectInputStream(con.getInputStream()); Object o= in.readObject(); in.close(); return o; } catch (Exception e) { System.out.println(e); return null; }} 急求高手指导:java如何做连接windows域的用户验证 java数字字母混合字符串排序 java 散列码问题 (新手求答)困扰我许久的问题,望DX们指点... 关于clone的一个问题 简单的一个问题!望回答! 单纯用tomcat作为服务器的项目有没有,多不多?请知情者来这里投一票!谢谢 自己开始想转投JAVA,请大家推荐几本好书,谢谢了! 有没有好的基于java的报表工具? 老问题,java调用dll(高手请进) 请教各位Applet的数字签名怎样做1?? 请问:在Java的线程中,是否能声明一个对象数组。利用这个对象引用对象的成员?
Vector是不可以序列化的,
OK?
如果你System.out.println(""+ v)也会自动调用Vector.toString()方法,一样的
那我该怎么办呀
那我该怎么办呀
有哪些类是可序列化的呀,200分都给你了
jdk1.3 doc中说Vector是可序列化的啊。??public class Vector
extends AbstractList
implements List, Cloneable, Serializable
to swain:你先把v.size()写进去,然后一个接一个的写v.elementAt(i)就行了
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 接口。
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();
}
}
}
把问题描述完整嘛。把你的程序贴出来,不然怎么搞得清楚?
但一道我的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);
}
public void init() throws ServletException {
v.add("a");
v.add("a");
v.add("a");
v.add("a");
}
拿到
/**
* 发送远程方法调用请求,并返回结果。
* Creation date: (2001-4-14 16:28:16)
* @return java.lang.Object 远程方法调用结果
*/
public Object invoke()
{
System.out.println("invoke!");
ObjectInputStream in= null;
//ObjectOutputStream out= null;
Vector v= new Vector();
v.addElement(sJNDIName);
v.addElement(sMethodName);
v.addElement(cParamType);
v.addElement(oParam);
String sServletURL; //远程调用服务器端代理
sServletURL= com.powerise.power.util.CRMEJBClientProperties.getServletURL();
System.out.println("ServletURL:" + sServletURL);
try
{
URL url= new URL(sServletURL);
URLConnection con= url.openConnection();
con.setUseCaches(false);
con.setDoOutput(true);
con.setDoInput(true); ByteArrayOutputStream byteout= new ByteArrayOutputStream();
ObjectOutputStream out= new ObjectOutputStream(byteout);
out.writeObject(v);
out.flush(); byte buf[]= byteout.toByteArray();
con.setRequestProperty("Content-type", "application/octet-stream");
con.setRequestProperty("Content-length", "" + buf.length);
DataOutputStream dataOut= new DataOutputStream(con.getOutputStream());
dataOut.write(buf);
dataOut.flush();
dataOut.close(); in= new ObjectInputStream(con.getInputStream());
Object o= in.readObject();
in.close();
return o;
}
catch (Exception e)
{
System.out.println(e);
return null;
}
}