62,569
社区成员




public class Data implements Serializable{
public String user = "";
public String pass = "";
....
get/set方法...
}
public class CommonPlanContainer implements Serializable{
private Vector<Data> data;
public Vector<Data> getData() {
return data;
}
public void setData(Vector<Data> data) {
this.data = data;
}
}
//给你修改了一下
import java.util.*;
import java.io.*;
class Data implements Serializable{
public String user = "";
public String pass = "";
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String toString(){
return new StringBuilder("[").append(user).append(",").append(pass).append("]").toString();
}
}
public class CommonPlanContainer implements Serializable{
private Vector<Data> datas;
private int size;//增加一个size属性,存放的是data里面的元素的个数
public Vector<Data> getData() {
return datas;
}
public void setData(Vector<Data> data) {
this.datas = data;
this.size=data.size();//给size赋初始值
}
public String toString(){
StringBuilder sb=new StringBuilder("{");
for(Data d : datas){
sb.append(d.toString());
sb.append(" ");
}
sb.append("}");
return sb.toString();
}
private void writeObject(java.io.ObjectOutputStream out) throws IOException {
System.out.println("writeObject invoked");
out.writeObject(size);//先把元素个数序列化
for(Data d : datas){ //然后,把每一个Data对象序列化
out.writeObject(d);
}
}
private void readObject(java.io.ObjectInputStream in) throws IOException,
ClassNotFoundException {
System.out.println("readObject invoked");
datas =new Vector<Data>();
int count= ((Integer)in.readObject()).intValue();//先读出元素的个数来
for(int i=0;i<count;i++){//再读取每一个元素,重新构造Vector
Data d= (Data)in.readObject();
datas.add(d);
}
size=count;
}
public static void main(String args[])throws Exception{
Vector<Data> datas =new Vector<Data>();
Data d=new Data();
d.setPass("pass");
d.setUser("user");
datas.add(d);
CommonPlanContainer container = new CommonPlanContainer();
container.setData(datas);
ByteArrayOutputStream baos= new ByteArrayOutputStream();
ObjectOutputStream oos=new ObjectOutputStream(baos);
oos.writeObject(container);
byte[] buff=baos.toByteArray();
ByteArrayInputStream bain=new ByteArrayInputStream(buff);
ObjectInputStream oin=new ObjectInputStream(bain);
CommonPlanContainer con=(CommonPlanContainer)oin.readObject();
System.out.println(con);
oin.close();
oos.close();
}
}
public class FooImpl implements java.io.Serializable{
private String message;
public String getFoo() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
private void writeObject(java.io.ObjectOutputStream out) throws IOException {
System.out.println("writeObject invoked");
out.writeObject(this.message == null ? "hohohahaha" : this.message);
}
private void readObject(java.io.ObjectInputStream in) throws IOException,
ClassNotFoundException {
System.out.println("readObject invoked");
this.message = (String) in.readObject();
System.out.println("got message:" + message);
}
private Object writeReplace() throws ObjectStreamException {
System.out.println("writeReplace invoked");
return this;
}
private Object readResolve() throws ObjectStreamException {
System.out.println("readResolve invoked");
return this;
}
public Object serialize() throws IOException, ClassNotFoundException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(this);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
return ois.readObject();
}
public static void main(String[] args) throws IOException,
ClassNotFoundException {
FooImpl fooimpl = new FooImpl();
fooimpl.serialize();