当前位置: 技术问答>java相关
同样的问题我已经问了5遍了,全部分数为200,到给你啦
来源: 互联网 发布时间:2015-01-10
本文导语: Vector v=new Vector(); v.add("a"); v.add("a"); v.add("a"); v.add("a"); v.add("a"); //writeObject(v.toString());//成功 writeObject(v);//不成功 为什么? | Vector 肯定可以用readObject() 读回来的,因为它实现了Serializable 接口,但放在...
Vector v=new Vector();
v.add("a");
v.add("a");
v.add("a");
v.add("a");
v.add("a");
//writeObject(v.toString());//成功
writeObject(v);//不成功
为什么?
v.add("a");
v.add("a");
v.add("a");
v.add("a");
v.add("a");
//writeObject(v.toString());//成功
writeObject(v);//不成功
为什么?
|
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 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();
}
}
}
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:plato(天天)
jdk1.3 doc中说Vector是可序列化的啊。??
public class Vector
extends AbstractList
implements List, Cloneable, Serializable
jdk1.3 doc中说Vector是可序列化的啊。??
public class Vector
extends AbstractList
implements List, Cloneable, Serializable
|
robbin不要误人子弟,人家说的是writeObject(),不是println(),println()是可以正常调用的
to swain:你先把v.size()写进去,然后一个接一个的写v.elementAt(i)就行了
to swain:你先把v.size()写进去,然后一个接一个的写v.elementAt(i)就行了